ORACLE初始化参数文件详细文档
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                ORACLE初始化参数文件详细文档
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.                        
                                
                            
                            
                            注明:本文不是介紹ORACLE初始化參數的具體配置及調優,本文僅介紹初始化參數配置文件PFILE和SPFILE的使用及相關內容說明。 1.簡介 在9i之前,參數文件只有一種,它是文本格式的,稱為pfile,在9i及以后的版本中,新增了服務器參數文件,稱為spfile,它是二進制格式的。這兩種參數文件都是用來存儲參 數配置以供oracle讀取的,但也有不同點,注意以下幾點:
1)pfile是文本文件,spfile是二進制文件;
2) 對于參數的配置,pfile可以直接以文本編輯器打開手工配置,而spfile不行,必須在數據庫啟動后,通過sql命令進行在線修改,當然spfile 也可用文本編輯器打開,把里面文本的內容復制出來放在pfile中,但決對不可以直接修改,直接修改后會使文件無法讀取。
3)pfile配置改變后,要使用其生效,必須重新啟動數據庫,spfile的配置生效時限和作用域可以由修改參數的sql命令指定,可以立即生效,也可以不立即生效。當然有些參數的修改必須重啟數據庫才能生效;
4)可以用sql命令由pfile創建spfile,也可以由spfile創建pfile;
5)如果是手動創建數據庫而不是通過DBCA,則開始創建數據庫時,你只能定義pfile 。因為它是文本格式的;
現在一般普通生產庫都采用spfile啟動數據庫,pfile確實沒有用的理由了,感覺只有以下情況才會使用pfile:
1)入門學習時,為了理解初始化參數
2)創建數據庫時,因為這時還沒spfile
3)恢復數據庫時
4)采用RAC的生產庫中如果要共用spfile,可以建一個初始的pfile,然后在pfile指定spfile為共享設備文件
2.創建spfile和pfile語法
創建SPFILE(只能建在數據庫所在的機器上) CREATE SPFILE [= 'spfile_name'] FROM PFILE [= 'pfile_name']; 如果命令中未指定spfile的路徑則會在缺省路徑創建spfile文件(%ORACLE_HOME%/database/spfile<SID>.ora)
這個與spfile參數無關(rac中共享spfile時要注意) 創建PFILE CREATE PFILE [= 'pfile_name'] FROM SPFILE [= 'spfile_name'];
如果命令中未指定spfile的路徑則會從缺省路徑(%ORACLE_HOME%/database/spfile<SID>.ora)創建pfile文件
注:語法中創建和指定的spfile和pfile都是服務器路徑
注:不能創建已經由數據庫實例啟動的spfile(在nomount狀態下也不行)
3.數據庫啟動時spfile和pfile的加載順序 初始化參數是在數據庫實例啟動時(startup nomount)加載。 如果startup命令中未指定pfile參數,在windows系統中數據庫啟動時會按如下順序查找啟動參數文件: %ORACLE_HOME%/database/SPFILE<SID>.ora
%ORACLE_HOME%/database/SPFILE.ora
%ORACLE_HOME%/database/init<SID>.ora 在unix或linux系統中數據庫啟動時會按如下順序查找啟動參數文件: %ORACLE_HOME%/dbs/SPFILE<SID>.ora
%ORACLE_HOME%/dbs/SPFILE.ora
%ORACLE_HOME%/dbs/init<SID>.ora
也就是說先找spfile<sid>.ora文件,如果spfile<sid>.ora沒有則找spfile.ora文件,最后才會去找init<sid>.ora的pfile文件.
使用指定pfile啟動數據庫則數據庫會使用指定的pfile來加載數據庫參數:
命令如下:
startup pfile='<pfile>'
注:以pfile啟動的實例,修改初始化參數時不能使用scope=spfile的語法 如果參數文件(不管是pfile還是spfile)中指定了spfile的參數,則還會從指定的spfile中再讀取配置的參數,這樣數據庫的參數就包括了兩個文件的內容.
4.數據庫啟動參數的加載順序 加載順序按文件中順序讀取
如果文件中有兩個相同的參數名則以最后出現的為準,以下例子說明了這個問題。 如有一個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遞歸調用
如果出現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有效,不影響當前實例,需要重啟數據庫才能生效;
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.初始化參數的相關系統視圖 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??????? 是否允許會話級動態調整(alter session set...)??????????????
ISSYS_MODIFIABLE VARCHAR2(9)?? Y??????? 是否允許使用動態調整(alter system set...)
?????(
?????IMMEDIATE:可以調整且修改會立即生效;
?????DEFERRED:可以調整,但是在新建的會話中才生效;
?????FALSE:不可調整;
?????)??????????????????
ISMODIFIED?????? VARCHAR2(10)? Y??????? 參數在實例啟動后是否被修改過??????????????
ISADJUSTED?????? VARCHAR2(5)?? Y??????? 參數是否被調整
?????(對于有一些參數,如規范要求是素數,但是參數里設置了合數,則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
?
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的區別是當某個參數有多個值時,會顯示多行,最典型的就是參數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????????????????????????
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的區別是,V$PARAMETER顯示的是當前系統的初始化參數,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
?
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的區別的是gv$parameter多一個INST_ID字段(實例號),這個用于RAC數據庫系統中,INST_ID用于標識是哪個實例的信息,其實所有以gv$和以v$開始的系統視圖的區別都是這樣的。 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????????????????????????
ISADJUSTED?????? VARCHAR2(5)?? Y????????????????????????
DESCRIPTION????? VARCHAR2(64)? Y????????????????????????
UPDATE_COMMENT?? VARCHAR2(255) Y???????????????????????? 10.廢棄參數
Oracle數據庫中,系統提供了 幾個視圖可以查看系統參數的情況。視圖V$OBSOLETE_PARAMETER中含有所有的過時(obsolete)和強調(underscored) 參數。這里首先說明一下什么是Oracle的過時(obsolote)和強調(underscored)參數,過時參數,顧名思義就是在Oracle以前 的版本中存在,但在新版本中已經淘汰了的參數,已經不再使用;而強調參數,是指那些在新版本中保留了下來,但是除非特殊需要不希望用戶使用的那些參數。在 視圖V$OBSOLETE_PARAMETER中,包含這些參數的名稱和一個標志字ISSPECIFIED,該標志字用來指出這個參數是否在 init.ora文件中已實際設置。 下面的SQL腳本列出了當前系統中所有的過時參數名稱以及它們是否在當前系統中設定。
SQL> SELECT name, isspecified FROM v$obsolete_parameter; 上面談到,Oracle系統并沒有將V$OBSOLETE_PARAMETER視圖中的所有參數均丟棄,而是將其中的一部分轉換為強調參數,下 面就來討論如何查看這些參數是已被丟棄還是被轉換。這可以通過系統視圖X$KSPPO來查看,該視圖中包含一個名為KSPPOFLAG的字段,用來指明該 參數在當前版本中是被丟棄還是被強調,如果該值為1,則表示該參數已被丟棄,該值為2,則表明該參數現為強調參數。 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,
?????? decode(bitand(a.ksppiflg, 65536),
????????????? 65536,
????????????? 'IMMEDIATE',
????????????? decode(bitand(a.ksppiflg, 131072), 131072, 'DEFERRED', 'FALSE')) issys_modifiable,
?????? b.ksppstcmnt UPDATE_COMMENT
? from sys.x$ksppi a, sys.x$ksppcv b
?where a.indx = b.indx
?order by name 12.自動SGA內存管理的參數
ORACLE從10g開始可以自動管理SGA了.
當初始化參數中設置了SGA_TARGET后,ORACLE會自動根據總的SGA大小動態調整SGA中幾個區域的大小。當使用數據庫關閉時,會將最后調整的大小記錄到SPFILE中,以供下次系統啟動時直接應用。
自動調整后的分類參數在SPFILE中類似如下: 以下是11g數據庫SPFILE的部分內容,這是一個使用RAW設備兩節點的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
                        
                        
                        1)pfile是文本文件,spfile是二進制文件;
2) 對于參數的配置,pfile可以直接以文本編輯器打開手工配置,而spfile不行,必須在數據庫啟動后,通過sql命令進行在線修改,當然spfile 也可用文本編輯器打開,把里面文本的內容復制出來放在pfile中,但決對不可以直接修改,直接修改后會使文件無法讀取。
3)pfile配置改變后,要使用其生效,必須重新啟動數據庫,spfile的配置生效時限和作用域可以由修改參數的sql命令指定,可以立即生效,也可以不立即生效。當然有些參數的修改必須重啟數據庫才能生效;
4)可以用sql命令由pfile創建spfile,也可以由spfile創建pfile;
5)如果是手動創建數據庫而不是通過DBCA,則開始創建數據庫時,你只能定義pfile 。因為它是文本格式的;
現在一般普通生產庫都采用spfile啟動數據庫,pfile確實沒有用的理由了,感覺只有以下情況才會使用pfile:
1)入門學習時,為了理解初始化參數
2)創建數據庫時,因為這時還沒spfile
3)恢復數據庫時
4)采用RAC的生產庫中如果要共用spfile,可以建一個初始的pfile,然后在pfile指定spfile為共享設備文件
2.創建spfile和pfile語法
創建SPFILE(只能建在數據庫所在的機器上) CREATE SPFILE [= 'spfile_name'] FROM PFILE [= 'pfile_name']; 如果命令中未指定spfile的路徑則會在缺省路徑創建spfile文件(%ORACLE_HOME%/database/spfile<SID>.ora)
這個與spfile參數無關(rac中共享spfile時要注意) 創建PFILE CREATE PFILE [= 'pfile_name'] FROM SPFILE [= 'spfile_name'];
如果命令中未指定spfile的路徑則會從缺省路徑(%ORACLE_HOME%/database/spfile<SID>.ora)創建pfile文件
注:語法中創建和指定的spfile和pfile都是服務器路徑
注:不能創建已經由數據庫實例啟動的spfile(在nomount狀態下也不行)
3.數據庫啟動時spfile和pfile的加載順序 初始化參數是在數據庫實例啟動時(startup nomount)加載。 如果startup命令中未指定pfile參數,在windows系統中數據庫啟動時會按如下順序查找啟動參數文件: %ORACLE_HOME%/database/SPFILE<SID>.ora
%ORACLE_HOME%/database/SPFILE.ora
%ORACLE_HOME%/database/init<SID>.ora 在unix或linux系統中數據庫啟動時會按如下順序查找啟動參數文件: %ORACLE_HOME%/dbs/SPFILE<SID>.ora
%ORACLE_HOME%/dbs/SPFILE.ora
%ORACLE_HOME%/dbs/init<SID>.ora
也就是說先找spfile<sid>.ora文件,如果spfile<sid>.ora沒有則找spfile.ora文件,最后才會去找init<sid>.ora的pfile文件.
使用指定pfile啟動數據庫則數據庫會使用指定的pfile來加載數據庫參數:
命令如下:
startup pfile='<pfile>'
注:以pfile啟動的實例,修改初始化參數時不能使用scope=spfile的語法 如果參數文件(不管是pfile還是spfile)中指定了spfile的參數,則還會從指定的spfile中再讀取配置的參數,這樣數據庫的參數就包括了兩個文件的內容.
4.數據庫啟動參數的加載順序 加載順序按文件中順序讀取
如果文件中有兩個相同的參數名則以最后出現的為準,以下例子說明了這個問題。 如有一個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遞歸調用
如果出現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有效,不影響當前實例,需要重啟數據庫才能生效;
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.初始化參數的相關系統視圖 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??????? 是否允許會話級動態調整(alter session set...)??????????????
ISSYS_MODIFIABLE VARCHAR2(9)?? Y??????? 是否允許使用動態調整(alter system set...)
?????(
?????IMMEDIATE:可以調整且修改會立即生效;
?????DEFERRED:可以調整,但是在新建的會話中才生效;
?????FALSE:不可調整;
?????)??????????????????
ISMODIFIED?????? VARCHAR2(10)? Y??????? 參數在實例啟動后是否被修改過??????????????
ISADJUSTED?????? VARCHAR2(5)?? Y??????? 參數是否被調整
?????(對于有一些參數,如規范要求是素數,但是參數里設置了合數,則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
?
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的區別是當某個參數有多個值時,會顯示多行,最典型的就是參數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????????????????????????
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的區別是,V$PARAMETER顯示的是當前系統的初始化參數,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
?
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的區別的是gv$parameter多一個INST_ID字段(實例號),這個用于RAC數據庫系統中,INST_ID用于標識是哪個實例的信息,其實所有以gv$和以v$開始的系統視圖的區別都是這樣的。 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????????????????????????
ISADJUSTED?????? VARCHAR2(5)?? Y????????????????????????
DESCRIPTION????? VARCHAR2(64)? Y????????????????????????
UPDATE_COMMENT?? VARCHAR2(255) Y???????????????????????? 10.廢棄參數
Oracle數據庫中,系統提供了 幾個視圖可以查看系統參數的情況。視圖V$OBSOLETE_PARAMETER中含有所有的過時(obsolete)和強調(underscored) 參數。這里首先說明一下什么是Oracle的過時(obsolote)和強調(underscored)參數,過時參數,顧名思義就是在Oracle以前 的版本中存在,但在新版本中已經淘汰了的參數,已經不再使用;而強調參數,是指那些在新版本中保留了下來,但是除非特殊需要不希望用戶使用的那些參數。在 視圖V$OBSOLETE_PARAMETER中,包含這些參數的名稱和一個標志字ISSPECIFIED,該標志字用來指出這個參數是否在 init.ora文件中已實際設置。 下面的SQL腳本列出了當前系統中所有的過時參數名稱以及它們是否在當前系統中設定。
SQL> SELECT name, isspecified FROM v$obsolete_parameter; 上面談到,Oracle系統并沒有將V$OBSOLETE_PARAMETER視圖中的所有參數均丟棄,而是將其中的一部分轉換為強調參數,下 面就來討論如何查看這些參數是已被丟棄還是被轉換。這可以通過系統視圖X$KSPPO來查看,該視圖中包含一個名為KSPPOFLAG的字段,用來指明該 參數在當前版本中是被丟棄還是被強調,如果該值為1,則表示該參數已被丟棄,該值為2,則表明該參數現為強調參數。 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,
?????? decode(bitand(a.ksppiflg, 65536),
????????????? 65536,
????????????? 'IMMEDIATE',
????????????? decode(bitand(a.ksppiflg, 131072), 131072, 'DEFERRED', 'FALSE')) issys_modifiable,
?????? b.ksppstcmnt UPDATE_COMMENT
? from sys.x$ksppi a, sys.x$ksppcv b
?where a.indx = b.indx
?order by name 12.自動SGA內存管理的參數
ORACLE從10g開始可以自動管理SGA了.
當初始化參數中設置了SGA_TARGET后,ORACLE會自動根據總的SGA大小動態調整SGA中幾個區域的大小。當使用數據庫關閉時,會將最后調整的大小記錄到SPFILE中,以供下次系統啟動時直接應用。
自動調整后的分類參數在SPFILE中類似如下: 以下是11g數據庫SPFILE的部分內容,這是一個使用RAW設備兩節點的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
轉載于:https://blog.51cto.com/garlics/912212
總結
以上是生活随笔為你收集整理的ORACLE初始化参数文件详细文档的全部內容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: 北京一地铁口现煎饼果子机器人:3分钟一个
 - 下一篇: 3999 元卷上加卷:石头 G10S P