oracle rac 中 映象 控制檔案 更新雙節點spfile for ASM 2013修改

spectre2發表於2012-01-09

2013最新修改,原文於2012年1月9日發表,有一些關於rac使用spfile啟動的部分解釋的過於武斷(下文紅底小字部分),回頭整理的時候發現,對新人有誤導的地方,特此改正(下文紅底小字部分作廢),如朋友們發現其它問題,請留言不吝賜教,謝謝。


      oracle rac 如果以srvctl start database -d orcl 的方式啟動的話,預設是以共享儲存(ASM、裸裝置等)中的spfile啟動,而如果在各節點以sqlplus / as sysdba 登入進去啟動的話,spfile是以各節點本地的spfile啟動的,) 資料庫的各節點啟動時是先在當前節點的$ORACLE_HOME/dbs下查詢spfile.ora,如不存在spfile.ora,就使用init.ora作為引數檔案啟動當前節點資料庫,而oracle RAC中,init.ora裡預設配置的是spfile在共享儲存(ASM、裸裝置等)中的路徑。如果當前節點$ORACLE_HOME/dbs下建立了一個spfile.ora,oracle在啟動的時候是不會去讀init.ora下的配置的,這樣oracle例項就會以節點本地的spfile.ora啟動了,所以最終可能造成了rac兩例項spfile不一致。而如果兩個spfile中設定的控制檔案位置(或其它引數)不一致的話,極有可能導致故障。因此,在映象控制檔案的時候一定要注意這個問題,要將各節點本地和共享儲存(磁碟陣列)中的spfile都統一,下面是同步spfile的方法:


注意:如果我們直接使用: create pfile from spfile 命令建立pfile,那麼生成的pfile 檔案將覆蓋原有$ORACLE_HOME/dbs 目錄下的pfile 檔案。 而在之前的pfile檔案裡面值保留了一條指向spfile存放位置的記錄。 這樣修改之後,就會造成資料庫啟動時會因為找不到spfile檔案而讀取本地的pfile檔案,而不是共享裝置上的spfile檔案。這樣對引數管理上就會帶來麻煩,也帶來其他的隱患。

所以對於RAC,要慎用 create pfile from spfile 來建立pfile 檔案, 在建立的時候,儘量指定pfile的生成位置,同時,在保證節點本地spfile和共享庫裡的spfile一致性之後,儘量把$ORACLE_HOME/dbs 目錄下的spfile檔案移動到其它地方(或改字尾名備份,不建議直接刪除,可以在共享庫spfile意外損壞時做備份使用),使資料庫只能使用共享庫裡的spfile啟動,避免管理上的混亂。


1.       關閉所有節點.

2.       srvctl start database –d orcl –o nomount 將資料庫開啟到nomount狀態

3.       檢視asm中控制檔案所在位置,

#export ORACLE_SID=+ASM1

#asmcmd

>cd DATAGROUP1/ORCL/CONTROLFILE/

>ls

Current.269.723401780

>exit


#export ORACLE_SID=orcl1

#sqlplus / as sysdba

SQL>show parameter spfile

SQL>+DG1/orcl/spfileorcl.ora

此時spfileasm
#sqlplus / as sysdba

SQL>Show parameter contr


4 .複製控制檔案

Export ORACLE_SID=orcl1

Rman target /

RMAN>restore controlfile to '+DG1/ORCL/CONTROLFILE/Current.269.723401781'from '+DG1/ORCL/CONTROLFILE/Current.269.723401780';

RMAN>restore controlfile to '+DG1/ORCL/CONTROLFILE/Current.269.723401782'from '+DG1/ORCL/CONTROLFILE/Current.269.723401780';

新建的控制檔名字可以按格式隨便取等會複製完後ASM會自動重新命名

5.使用asmcmd 檢查新生成的controlfile的名字.

#asmcmd

>cd DATAGROUP1/ORCL/CONTROLFILE/

>ls

Current.269.723401780
Current.270.723605223
Current.261.723502743

>exit


6.重新登入到例項中修改asm 中的spfile
#sqlplus / as sysdba

SQL> alter system set control_files='+DG1/ORCL/CONTROLFILE/Current.269.723401780','+DG1/ORCL/CONTROLFILE/Current.270.723605223','+DG1/ORCL/CONTROLFILE/Current.261.723502743' scope=spfile;

7. 關閉資料庫重新啟動資料庫必須以srvctl啟動

   #srvctl stop database –d orcl

   #srvctl start database –d orcl

8. 登入到資料庫中建立pfile 
#sqlplus / as sysdba

SQL>create pfile=’/u01/app/init_orcl.ora’ from spfile;
本步驟兩個節點都要進行

9 .關閉資料庫sqplus / as sysdba方式:
#sqlplus / as sysdba

SQL>Shutdown immediate ;

SQL>Startup pfile=’/u01/app/init_orcl.ora’

SQL>Create spfile from pfile= ’/u01/app/init_orcl.ora’

SQL>Shutdown immediate;

SQL>Startup

本步驟兩個節點都要進行

至此,spfile 已更新完畢
之後可以shutdown immediate,然後
以srvctl start database -d orcl 的方式啟動。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/14184018/viewspace-714595/,如需轉載,請註明出處,否則將追究法律責任。

相關文章