OracleRAC修改spfile引數檔案失敗處理
OracleRAC修改引數檔案失敗處理,或者恢復因誤生成PFILE 導致RAC的SPFILE無效無法啟動問題,或修改RAC spfile檔案位置。
Oracle RAC 架構下,兩個或多個叢集資料庫例項共享一個spfile檔案,該檔案位於共享磁碟組上。本地引數檔案中僅保留initSID.ora檔案型別為PFILE,由代理自動生成,內容為到ASM共享檔案系統spfile的指向,如下圖:
這裡希望提醒大家的是:在RAC環境中輕易不要使用“create pfile from spfile;”命令建立PFILE。
因為在RAC環境,預設情況下的SPFILE會放到共享儲存上(裸裝置或ASM磁碟組上),RAC的每臺主機上是使用PFILE指向SPFILE的方法來完成SPFILE的定位的。
一旦使用“create pfile from spfile;”命令建立PFILE後,新生成的PFILE將覆蓋原有dbs目錄下的PFILE,此後資料庫例項啟動時讀取的將不再是共享儲存上的SPFILE,轉而讀取本地的PFILE檔案的內容。
1.預設情況下$ORACLE_HOME/dbs目錄下的PFILE initracdb.ora中只有一行記錄,記錄著SPFILE的路徑指向。
/oracle/app/oracle/product/10.2.0/db_1/dbs$ cat initracdb1.ora
spfile=+DATA/racdb/spfileracdb.ora
2.此時可以從資料庫引數得到目前使用的是SPFILE啟動的資料庫
SQL> show parameter spfile
NAME TYPE VALUE
--------------- ----------- ------------------------------
spfile string +DATA/racdb/spfileracdb.ora
3.此時如果使用“create pfile from spfile;”命令建立PFILE,原有PFIEL中的SPFILE指向將被具體的資料庫引數所取代。
當資料庫再次啟動時,因為無法找到SPFILE的位置,將使用PFILE檔案中記錄的具體引數值完成資料庫的啟動,這樣將會給資料庫的管理帶來比較大的影響,不再享受到SPFILE引數的便捷。
如果出現了這樣的問題該如何處理呢?方法比較簡單,將本地PFILE的內容恢復為具有SPFILE指向的內容即可
一.spfile和pfile的相互建立:
這個在實際引數修改過程中,建議可以提前來對原來的引數做一下備份,以免參數修改錯誤導致例項不能及時恢復。在RAC下修改引數建議指定檔案路徑和名稱,建立成功後確認下建立的引數檔案正常可用後,再著手修改引數來做測試,一旦引數修改有問題,馬上可以使用之前備份的原來可正常使用的引數來啟動例項。
語法如下:
create spfile[='xxxxx'] from pfile[='xxxx']; create pfile[='xxxxx'] from spfile[='xxxx'];
create pfile from spfile; --都不指定路徑時,預設會生成$ORACLE_HOME/dbs/initSID.ora
--RAC下強烈不建議這樣建立引數檔案,這會破壞掉原有的初始化引數檔案造成local引數檔案損壞:
我們先來看看RAC正常情況下,引數檔案情況:
SQL> show parameter pfile NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ spfile string +DGSYSTEM/erpdb/spfileerpdb.or a
--資料庫以spfile啟動,RAC例項共享1個相同引數檔案,+DGSYSTEM/erpdb/spfileerpdb.ora。
(該檔案可以為別名,指向另外一個檔案)
ASMCMD> ls -ls Type Redund Striped Time Sys Block_Size Blocks Bytes Space Name Y CONTROLFILE/ Y DATAFILE/ Y ONLINELOG/ Y TEMPFILE/ N spfileerpdb.ora => +DGSYSTEM/DB_UNKNOWN/PARAMETERFILE/SPFILE.275.1122329821
二、模擬修改引數檔案出現錯誤導致資料庫無法啟動到nomount,
圖略
三、