ORACLE初始化參數文件詳細文檔
文章摘要:ORACLE初始化參數文件詳細文檔 1.簡介 在9i之前,參數文件只有一種,它是文本格式的,稱為pfile,在9i及以后的版本中,新增了服務器參數文件,稱為spfile,它是二進制格式的。這兩種參數文件都是用來存儲參 數配置以供oracle讀取的,但也有不同點,注意以下幾點: 1)pfile是文本文件,spfile是二進制文件; 2)對于參數的配置
ORACLE初始化參數文件詳細文檔 1.簡介
在9i之前,參數文件只有一種,它是文本格式的,稱為pfile,在9i及以后的版本中,新增了服務器參數文件,稱為spfile,它是二進制格式的。這兩種參數文件都是用來存儲參 數配置以供oracle讀取的,但也有不同點,注意以下幾點:
1)pfile是文本文件,spfile是二進制文件;
2)對于參數的配置,pfile可以直接以文本編輯器打開手工配置,而spfile不行,必須在數據庫啟動后,通過sql命令進行在線修改,當然spfile也可用文本編輯器打開,把里面文本的內容復制出來放在pfile中,但決對不可以直接修改,直接修改后會使文件無法讀取。
3)pfile配置改變后,要使用其生效,必須重新啟動數據庫,spfile的配置生效時限和作用域可以由修改參數的sql命令指定,可以立即生效,也可以不立即生效。當然有些參數的修改必須重啟數據庫才能生效;
4)可以用sql命令由pfile創(chuàng)建spfile,也可以由spfile創(chuàng)建pfile;
5)如果是手動創(chuàng)建數據庫而不是通過DBCA,則開始創(chuàng)建數據庫時,你只能定義pfile 。因為它是文本格式的;
現(xiàn)在一般普通生產庫都采用spfile啟動數據庫,pfile確實沒有用的理由了,感覺只有以下情況才會使用pfile:
1)入門學習時,為了理解初始化參數
2)創(chuàng)建數據庫時,因為這時還沒spfile
3)恢復數據庫時
4)采用RAC的生產庫中如果要共用spfile,可以建一個初始的pfile,然后在pfile指定spfile為共享設備文件
2.創(chuàng)建spfile和pfile語法
創(chuàng)建SPFILE(只能建在數據庫所在的機器上)
CREATE SPFILE [= 'spfile_name'] FROM PFILE [= 'pfile_name'];
如果命令中未指定spfile的路徑則會在缺省路徑創(chuàng)建spfile文件(%ORACLE_HOME%\database\spfile.ora)
這個與spfile參數無關(rac**享spfile時要注意)
創(chuàng)建PFILE
CREATE PFILE [= 'pfile_name'] FROM SPFILE [= 'spfile_name'];
如果命令中未指定spfile的路徑則會從缺省路徑(%ORACLE_HOME%\database\spfile.ora)創(chuàng)建pfile文件
注:語法中創(chuàng)建和指定的spfile和pfile都是服務器路徑
注:不能創(chuàng)建已經由數據庫實例啟動的spfile(在nomount狀態(tài)下也不行)
3.數據庫啟動時spfile和pfile的加載順序
初始化參數是在數據庫實例啟動時(startup nomount)加載。
如果startup命令中未指定pfile參數,在windows系統(tǒng)中數據庫啟動時會按如下順序查找啟動參數文件:
%ORACLE_HOME%\database\SPFILE.ora
%ORACLE_HOME%\database\SPFILE.ora
%ORACLE_HOME%\database\init.ora
在unix或linux系統(tǒng)中數據庫啟動時會按如下順序查找啟動參數文件:
%ORACLE_HOME%\dbs\SPFILE.ora
%ORACLE_HOME%\dbs\SPFILE.ora
%ORACLE_HOME%\dbs\init.ora
也就是說先找spfile.ora文件,如果spfile.ora沒有則找spfile.ora文件,最后才會去找init.ora的pfile文件.
使用指定pfile啟動數據庫則數據庫會使用指定的pfile來加載數據庫參數:
命令如下:
startup pfile=''
注:以pfile啟動的實例,修改初始化參數時不能使用scope=spfile的語法
如果參數文件(不管是pfile還是spfile)中指定了spfile的參數,則還會從指定的spfile中再讀取配置的參數,這樣數據庫的參數就包括了兩個文件的內容.4.數據庫啟動參數的加載順序
加載順序按文件中順序讀取
如果文件中有兩個相同的參數名則以最后出現(xiàn)的為準,以下例子說明了這個問題。
如有一個spfile文件(myspfile.ora),包括兩個參數:
sessions=150
processes=200
另外有一個pfile文件(mypfile.ora),里面包括三個參數,其中指定了spfile為前面的spfile文件
processes=100
sessions=100
spfile='myspfile.ora'
processes=180
當使用mypfile.ora啟動數據庫時,會按如下順序讀取參數
1)processes=100
2) sessions=100
3) spfile='myspfile.ora'
3.1) sessions=150(重新加載)
3.2) processes=200(重新加載)
4)processes=180(再次重新加載)
最后加載的數據庫參數為
sessions=150
spfile='myspfile.ora'
processes=180
5.關于show parameter spfile時顯示的內容
如果是采用pfile指定了spfile參數,則顯示指定的spfile
如果是采用缺省的spfile啟動,則顯示缺省的spfile文件名,不管spfile還有沒有指定其它的spfile文件。
6.關于spfile遞歸調用
如果出現(xiàn)spfile遞歸調用,則ORACLE啟動時會報錯:
SQL> startup nomount;
ORA-03113: 通信通道的文件結束
SQL>
spfile遞歸調用就是指
spfile1.spfile='spfile2'
spfile2.spfile='spfile1'
這樣的參數配置
7.初始化參數的修改方法
分為手動修改和在線修改。
手動修改用于修改pfile,直接用文本編輯打開pfile修改。要使用修改生效,須重啟數據庫。
在線修改是在數據庫運行時,用alter system命令進行修改,命令如下(詳細的命令 語句請參考oracle官方參考文檔):
alter system set parameter_name = parameter_value [, parameter_value ]...
[ COMMENT 'text' ]
[ DEFERRED ]
[ SCOPE = { MEMORY | SPFILE | BOTH } ]
[ SID = { 'sid' | * } ]
注:
[ COMMENT 'text' ] :表示可以加注釋,如 ALTER SYSTEM SET JOB_QUEUE_PROCESSES=50 SCOPE=BOTH DEFERRED COMMENT=" 2008-05-19"
[ DEFERRED ]:表示所作修改只適用于將來的會話,對當前已有的會話不影響,這個參數只對少數參數有用,具體可使用的參數可以查看v$parameter視圖
select * from v$parameter where issys_modifiable='DEFERRED'
[ SCOPE = { MEMORY | SPFILE | BOTH } ]:
SPFILE:修改只對SPFILE有效,不影響當前實例,需要重啟數據庫才能生效;
ORACLE初始化參數文件詳細文檔(2)
文章摘要:MEMORY:修改只對內存有效,即只對當前實例有效,且立即生效,但不會保存到SPFILE, 數據庫重啟后此配置丟失; BOTH:顧名思義,包含以上兩種,立即生效,且永久生效。 所有的參數都可以使用spfile,部份參數可以使用me
MEMORY:修改只對內存有效,即只對當前實例有效,且立即生效,但不會保存到SPFILE, 數據庫重啟后此配置丟失;
BOTH:顧名思義,包含以上兩種,立即生效,且永久生效。
所有的參數都可以使用spfile,部份參數可以使用memory,可以使用如下SQL查詢不能使用memory方式修改的參數
select * from v$parameter where issys_modifiable='FALSE'
對于ALTER SYSTEM的參數修改命令,請注意以下幾點:
1)如果當前實例使用的是pfile而非spfile,則scope=spfile或scope=both會產生錯誤;
2)如果實例以pfile啟動,則scope的默認值為MEMORY,若以spfile啟動,則默認值為BOTH;
[ SID = { 'sid' | * } ]
指定修改參數的作用實例號,如果為*則表示所有實例,這個選項用于RAC數據庫8.刪除初始化參數:
alter system reset parameter_name
[ SCOPE = { MEMORY | SPFILE | BOTH } ]
[ SID = 'sid' ]
對于有些參數也可以使用 ALTER SYSTEM SET PARAMETER=''達到相同的效果;
9.初始化參數的相關系統(tǒng)視圖
9.1v$parameter
9.2v$parameter2
9.3v$system_parameter
9.4v$system_parameter2
9.5gv$parameter
9.6gv$parameter2
9.7gv$system_parameter
9.8gv$system_parameter2
SQL> desc v$parameter;
Name Type Nullable Default Comments
---------------- ------------- -------- ------- --------
NUM NUMBER Y 編號
NAME VARCHAR2(64) Y 參數名稱
TYPE NUMBER Y 參數類型
(
1 - Boolean
2 - String
3 - Integer
4 - Parameter file
5 - Reserved
6 - Big integer
)
VALUE VARCHAR2(512) Y 參數值
ISDEFAULT VARCHAR2(9) Y 是否為缺省值
ISSES_MODIFIABLE VARCHAR2(5) Y 是否允許會話級動態(tài)調整(alter session set...)
ISSYS_MODIFIABLE VARCHAR2(9) Y 是否允許使用動態(tài)調整(alter system set...)
(
IMMEDIATE:可以調整且修改會立即生效;
DEFERRED:可以調整,但是在新建的會話中才生效;
FALSE:不可調整;
)
ISMODIFIED VARCHAR2(10) Y 參數在實例啟動后是否被修改過
ISADJUSTED VARCHAR2(5) Y 參數是否被調整
(對于有一些參數,如規(guī)范要求是素數,但是參數里設置了合數,則ORACLE會自動調整成下一個素數)
DESCRIPTION VARCHAR2(64) Y 參數功能描述
UPDATE_COMMENT VARCHAR2(255) Y 最近的參數更新備注
以下是ORACLE官方文檔關于V$PARAMETER的解釋
V$PARAMETER displays information about the initialization parameters that are currently in effect for the session. A new session inherits parameter values from the instance-wide values displayed by the V$SYSTEM_PARAMETER view.
以下是字段說明:
NUM
NUMBER
Parameter number
NAME
VARCHAR2(64)
Name of the parameter
ORACLE初始化參數文件詳細文檔(3)
文章摘要:TYPE NUMBER Parameter type: 1 - Boolean 2 - String 3 - Integer 4 - Parameter file 5 - Reserved 6 - Big integer VALUE VARCHAR2(512) Parameter value for the session (if modified within the session); ot
TYPE
NUMBER
Parameter type:
1 - Boolean
2 - String
3 - Integer
4 - Parameter file
5 - Reserved
6 - Big integer
VALUE
VARCHAR2(512)
Parameter value for the session (if modified within the session); otherwise, the instance-wide parameter value
ISDEFAULT
VARCHAR2(9)
Indicates whether the parameter is set to the default value (TRUE) or the parameter value was specified in the parameter file (FALSE)
ISSES_MODIFIABLE
VARCHAR2(5)
Indicates whether the parameter can be changed with ALTER SESSION (TRUE) or not (FALSE)
ISSYS_MODIFIABLE
VARCHAR2(9)
Indicates whether the parameter can be changed with ALTER SYSTEM and when the change takes effect:
IMMEDIATE - Parameter can be changed with ALTER SYSTEM regardless of the type of parameter file used to start the instance. The change takes effect immediately.
DEFERRED - Parameter can be changed with ALTER SYSTEM regardless of the type of parameter file used to start the instance. The change takes effect in subsequent sessions.
FALSE - Parameter cannot be changed with ALTER SYSTEM unless a server parameter file was used to start the instance. The change takes effect in subsequent instances.
ISMODIFIED
VARCHAR2(10)
Indicates whether the parameter has been modified after instance startup:
MODIFIED - Parameter has been modified with ALTER SESSION
SYSTEM_MOD - Parameter has been modified with ALTER SYSTEM (which causes all the currently logged in sessions' values to be modified)
FALSE - Parameter has not been modified after instance startup
ISADJUSTED
VARCHAR2(5)
Indicates whether Oracle adjusted the input value to a more suitable value (for example, the parameter value should be prime, but the user input a non-prime number, so Oracle adjusted the value to the next prime number)
DESCRIPTION
VARCHAR2(64)
Description of the parameter
UPDATE_COMMENT
VARCHAR2(255)
Comments associated with the most recent update
V$PARAMETER2與V$PARAMETER的區(qū)別是當某個參數有多個值時,會顯示多行,最典型的就是參數control_files,一般的數據庫都會指定多個控制文件,在V$PARAMETER中只顯示一行,但在V$PARAMETER2會顯示多行,如下所示:
SQL> select name,value from V$PARAMETER where name='control_files';
NAME VALUE
----------------- --------------------------------------------------------------------------------
control_files H:\oracle\oradata\ydgl\control01.ctl, H:\oracle\oradata\ydgl\control02.ctl, H:\oracle\oradata\ydgl\control03.ctl
SQL> select name,value,ORDINAL from V$PARAMETER2 where name='control_files';
NAME VALUE ORDINAL
------------------- ----------------------------------------------------------- ----------
control_files H:\oracle\oradata\ydgl\control01.ctl 1
control_files H:\oracle\oradata\ydgl\control02.ctl 2
control_files H:\oracle\oradata\ydgl\control03.ctl' 3
V$PARAMETER2多了一個ORDINAL字段,表示順序。
SQL> desc v$parameter2;
Name Type Nullable Default Comments
---------------- ------------- -------- ------- --------
NUM NUMBER Y
ORACLE初始化參數文件詳細文檔(4)
-
Svn中文網 www. 2009-11-13 06:40:28 來源:bbs. 作者:佚名 點擊:494次
文章摘要:NAME VARCHAR2(64) Y TYPE NUMBER Y VALUE VARCHAR2(512) Y ISDEFAULT VARCHAR2(6) Y ISSES_MODIFIABLE VARCHAR2(5) Y ISSYS_MODIFIABLE VARCHAR2(9) Y ISMODIFIED VARCHAR2(10) Y ISADJUSTED VARCHAR2(5) Y DESCRI
-
NAME VARCHAR2(64) Y
TYPE NUMBER Y
VALUE VARCHAR2(512) Y
ISDEFAULT VARCHAR2(6) Y
ISSES_MODIFIABLE VARCHAR2(5) Y
ISSYS_MODIFIABLE VARCHAR2(9) Y
ISMODIFIED VARCHAR2(10) Y
ISADJUSTED VARCHAR2(5) Y
DESCRIPTION VARCHAR2(64) Y
ORDINAL NUMBER Y
UPDATE_COMMENT VARCHAR2(255) Y
V$SYSTEM_PARAMETER 和V$PARAMETER的區(qū)別是,V$PARAMETER顯示的是當前系統(tǒng)的初始化參數,V$SYSTEM_PARAMETER顯示的是新會話將使用的初始化參數。
例如下例中,使用deferred參數修改了sore_area_size,在V$PARAMETER顯示的老值,而V$SYSTEM_PARAMETER顯示的是新值:
SQL> show parameter sort_area_size;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
sort_area_size integer 524288
SQL> alter system set sort_area_size=603213 deferred;
System altered
SQL> select name,value from v$parameter where name='sort_area_size';
NAME VALUE
-------------------------------- --------------------------------------------------------------------------------
sort_area_size 524288
SQL> select name,value from v$system_parameter where name='sort_area_size';
NAME VALUE
-------------------------------- --------------------------------------------------------------------------------
sort_area_size 603213
ORACLE初始化參數文件詳細文檔(5)
-
Svn中文網 www. 2009-11-13 06:40:28 來源:bbs. 作者:佚名 點擊:494次
文章摘要:SQL SQL desc v$system_parameter; Name Type Nullable Default Comments ---------------- ------------- -------- ------- -------- NUM NUMBER Y NAME VARCHAR2(64) Y TYPE NUMBER Y VALUE VARCHAR2(512) Y ISDE
-
SQL>
SQL> desc v$system_parameter;
Name Type Nullable Default Comments
---------------- ------------- -------- ------- --------
NUM NUMBER Y
NAME VARCHAR2(64) Y
TYPE NUMBER Y
VALUE VARCHAR2(512) Y
ISDEFAULT VARCHAR2(9) Y
ISSES_MODIFIABLE VARCHAR2(5) Y
ISSYS_MODIFIABLE VARCHAR2(9) Y
ISMODIFIED VARCHAR2(8) Y
ISADJUSTED VARCHAR2(5) Y
DESCRIPTION VARCHAR2(64) Y
UPDATE_COMMENT VARCHAR2(255) Y
gv$parameter和v$parameter的區(qū)別的是gv$parameter多一個INST_ID字段(實例號),這個用于RAC數據庫系統(tǒng)中,INST_ID用于標識是哪個實例的信息,其實所有以gv$和以v$開始的系統(tǒng)視圖的區(qū)別都是這樣的。
SQL> desc gv$parameter;
Name Type Nullable Default Comments
---------------- ------------- -------- ------- --------
INST_ID NUMBER Y
NUM NUMBER Y
NAME VARCHAR2(64) Y
TYPE NUMBER Y
VALUE VARCHAR2(512) Y
ISDEFAULT VARCHAR2(9) Y
ISSES_MODIFIABLE VARCHAR2(5) Y
ISSYS_MODIFIABLE VARCHAR2(9) Y
ISMODIFIED VARCHAR2(10) Y
ORACLE初始化參數文件詳細文檔(6)
-
Svn中文網 www. 2009-11-13 06:40:28 來源:bbs. 作者:佚名 點擊:494次
文章摘要:ISADJUSTED VARCHAR2(5) Y DESCRIPTION VARCHAR2(64) Y UPDATE_COMMENT VARCHAR2(255) Y 10.廢棄參數 Oracle數據庫中,系統(tǒng)提供了幾個視圖可以查看系統(tǒng)參數的情況。視圖V$OBSOLETE_PARAMETER中含有所有的過時(obsol
-
ISADJUSTED VARCHAR2(5) Y
DESCRIPTION VARCHAR2(64) Y
UPDATE_COMMENT VARCHAR2(255) Y 10.廢棄參數
Oracle數據庫中,系統(tǒng)提供了幾個視圖可以查看系統(tǒng)參數的情況。視圖V$OBSOLETE_PARAMETER中含有所有的過時(obsolete)和強調(underscored)參數。這里首先說明一下什么是Oracle的過時(obsolote)和強調(underscored)參數,過時參數,顧名思義就是在Oracle以前的版本中存在,但在新版本中已經淘汰了的參數,已經不再使用;而強調參數,是指那些在新版本中保留了下來,但是除非特殊需要不希望用戶使用的那些參數。在視圖V$OBSOLETE_PARAMETER中,包含這些參數的名稱和一個標志字ISSPECIFIED,該標志字用來指出這個參數是否在init.ora文件中已實際設置。
下面的SQL腳本列出了當前系統(tǒng)中所有的過時參數名稱以及它們是否在當前系統(tǒng)中設定。
SQL> SELECT name, isspecified FROM v$obsolete_parameter;
上面談到,Oracle系統(tǒng)并沒有將V$OBSOLETE_PARAMETER視圖中的所有參數均丟棄,而是將其中的一部分轉換為強調參數,下面就來討論如何查看這些參數是已被丟棄還是被轉換。這可以通過系統(tǒng)視圖X$KSPPO來查看,該視圖中包含一個名為KSPPOFLAG的字段,用來指明該參數在當前版本中是被丟棄還是被強調,如果該值為1,則表示該參數已被丟棄,該值為2,則表明該參數現(xiàn)為強調參數。
SELECT kspponm,
DECODE(ksppoflg, 1,'Obsolete', 2, 'Underscored')
FROM x$ksppo
ORDER BY kspponm;
注:該視圖只在sys用戶下可以看到。
11.隱藏參數
數據庫初始化總共有近千個,可見的只有兩三百個,其它的都是隱藏參數。
隱藏參數的參數名都是以下劃線開頭,比較少用,一般用于進行ORACLE故障診斷或恢復數據庫,或者是進行一些不成熟功能的測試。
使用如下SQL可以查詢到所有的初始化參數。
--用戶需要有訪問內核表的權限,一般為sys用戶登錄
select a.indx,
a.inst_id,
a.ksppinm name,
a.ksppity type,
a.ksppdesc DESCRIPTION,
a.ksppiflg FLAG,
b.ksppstvl value,
b.ksppstdf ISDEFAULT,
b.ksppstvf ORDINAL,
b.ksppstcmnt UPDATE_COMMENT
from sys.x$ksppi a, sys.x$ksppcv b
where a.indx = b.indx
12.自動SGA內存管理的參數
ORACLE從10g開始可以自動管理SGA了.
當初始化參數中設置了SGA_TARGET后,ORACLE會自動根據總的SGA大小動態(tài)調整SGA中幾個區(qū)域的大小。當使用數據庫關閉時,會將最后調整的大小記錄到SPFILE中,以供下次系統(tǒng)啟動時直接應用。
自動調整后的分類參數在SPFILE中類似如下:
以下是11g數據庫SPFILE的部分內容,這是一個使用RAW設備兩節(jié)點的RAC數據庫:
rawrac1.__db_cache_size=138412032
rawrac2.__db_cache_size=134217728
rawrac2.__java_pool_size=4194304
rawrac2.__large_pool_size=4194304
rawrac2.__oracle_base='C:\oracle'#ORACLE_BASE set from environment
rawrac1.__oracle_base='C:\oracle'#ORACLE_BASE set from environment
rawrac2.__pga_aggregate_target=155189248
rawrac2.__sga_target=230686720
rawrac2.__shared_io_pool_size=0
rawrac1.__shared_pool_size=83886080
rawrac2.__shared_pool_size=83886080
rawrac2.__streams_pool_size=0
*.memory_target=384827392
本文來自[Svn中文網]轉發(fā)請保留本站地址:http://www./sql/Oracle/2009111312918_6.html