1. 程式人生 > 其它 >OracleRAC修改spfile引數檔案失敗處理

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,

圖略

三、