啟動instance過程:
<a href="http://luotaoyang.blog.51cto.com/attachment/201002/22/545649_1266831905RA6O.png"></a>
由上圖可知,oracle instance是根據Initialization Parameter Files裡設定的參數來初始化oracle instance的。
Initialization Parameter Files的條目中包含顯示和隐式兩種參數,顯示參數在檔案中明确指出了參數值,隐式參數沒有在檔案中指定,均按oracle預設值。多個Initialization Parameter Files可以同時存在。有兩種類型的Initialization Parameter Files:pfile(Static parameter file)和SPFILE(Persistent server parameter file)。
pfile:
文本檔案,可以用任何辨別的系統文本編輯工具修改。在instance啟動後隻讀,如果裡面的内容被改變隻能在下次啟動instance後才能生效,oracle安裝完後會自動生成一個簡單模闆$ORACLE_HOME/dbs/init.ora。
SPFILE:
二進制檔案,隻能由oracle server修改和維護,隻能位于運作oracle server的機器上(pfile可以位于用戶端),可以被RMAN備份。位置$ORACLE_HOME/dbs/spfileSID.ora。
由pfile建立spfile:CREATE SPFILE = ‘$ORACLE_HOME/dbs/spfileDBA01.ora’
FROM PFILE = ‘$ORACLE_HOME/dbs/initDBA01.ora’;(可以在instance啟動前或啟動後建立),在預設情況下可直接這樣用:SQL&gt; CREATE SPFILE FROM PFILE;
由spfile建立pfile:SQL&gt; CREATE PFILE FROM SPFILE;
檢視各個參數:如果是pfile則可以用編輯器打開,如果是spfile則有三種方式:一是由spfile建立pfile,然後再打開pfile;二是利用Linux下的指令strings spfile;三是SQL&gt; show parameter “參數名的頭幾個字母”。
如:SQL> show parameter fast
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
fast_start_io_target integer 0
fast_start_mttr_target integer 300
fast_start_parallel_rollback string LOW
修改參數(spfile條件下):
ALTER SYSTEM SET parameter_name = parameter_value
[COMMENT 'text'] [deferred] [SCOPE = MEMORY|SPFILE|BOTH]
[SID= 'sid'|'*']
comment:添加注釋。
deferred:延遲修改,下次啟動時才修改。
scope:預設both。memory,隻修改記憶體的值,臨時修改,不會改變spfile裡的值。spfile,隻修改spfile裡的值。both,既修改記憶體也修改spfile。對于pfile,scope選項隻能修改memory。
sid:在rac環境下,指定修改那個instance。
例1:
SQL> show parameter fast_start_mttr_target
------------------------------------ ----------- -------------
SQL>alter system set fast_start_mttr_target=250;
System altered.
fast_start_mttr_target integer 250
[oracle@localhost ~]$ strings ./dbs/spfilelty.ora | grep fast_start_mttr_target
*.fast_start_mttr_target=250
例2:SQL>alter system set fast_start_mttr_target=260 comment='hello world';
SQL&gt; select name, value, update_comment from v$parameter where name='fast_start_mttr_target';
NAME VALUE UPDATE_COMMENT
-------------------- -------------------- --------------------
fast_start_mttr_targ 260 hello world
*.fast_start_mttr_target=260#hello world
例3:
SQL> alter system set fast_start_mttr_target=300 scope=spfile;
------------------------------------ -----------
fast_start_mttr_target integer 260
*.fast_start_mttr_target=300
延遲修改的參數:
<a href="http://luotaoyang.blog.51cto.com/attachment/201002/22/545649_1266831950BSH6.png"></a>
删除spfile裡的值即将參數值置為預設值:ALTER SYSTEM RESET parameter_name [SCOPE =
MEMORY|SPFILE|BOTH] [SID= ‘sid’|’*’]
startup指令行為:
當輸入startup指令後,在$ORACLE_HOME/dbs/目錄下查找初始化參數檔案spfileSID.ora,啟動instance;若無這個檔案則查找預設spfile檔案,啟動instance;若無這個檔案則查找initSID.ora這個檔案并啟動instance。
指定一個pfile可以覆寫上述查找順序,如:STARTUP PFILE = $ORACLE_HOME/dbs/initDBA1.ora,直接用指定的pfile啟動instance。在pfile裡可以指定其他spfile,在pfile裡加入SPFILE=<full path and filename>即可。這是唯一能用一個處于其他位置的spfile啟動instance的方法。
本文轉自 d185740815 51CTO部落格,原文連結:http://blog.51cto.com/luotaoyang/277702,如需轉載請自行聯系原作者