今天在做RAC-DG實驗時,碰到了不少的問題,這個問題是在操作用pifle建立spifle時出現的
由於在配置RAC-DG主庫參數時,大部分人喜歡直接用alter system set xxx='xxx.xxx' scope=spfile;
而我由於不想一條條敲命令,所以先用主庫參數建立一個pifle,然後對pfile進行修改,加上我們所需的DG配置參數,然後再把pfile寫回spfile參數檔案,再用spfile來啟動RAC資料庫
步驟如下:
1.在主庫正常啟動狀態下執行:
SQL> create pfile='/rmanbackup/initora11dg.ora' from spfile;
File created.
2.修改產生的pfile參數檔案的內容,主要添加以下內容:
#裝完GI後原有參數
*.audit_file_dest='/u01/app/oracle/admin/ora11rac/adump'
*.audit_trail='db'
*.cluster_database=true
*.compatible='11.2.0.0.0'
*.control_files='+DATA/ora11rac/controlfile/current.260.823440203','+BACKUPDG/ora11rac/controlfile/current.256.823440203'
*.db_block_size=8192
*.db_create_file_dest='+DATA'
*.db_domain=''
*.db_name='ora11rac'
*.db_recovery_file_dest='+BACKUPDG'
*.db_recovery_file_dest_size=4558159872
*.diagnostic_dest='/u01/app/oracle'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=ora11racXDB)'
ora11rac2.instance_number=2
ora11rac1.instance_number=1
*.memory_target=838860800
*.open_cursors=300
*.processes=150
*.remote_listener='zlm-cluster-scan:1521'
*.remote_login_passwordfile='exclusive'
ora11rac2.thread=2
ora11rac1.thread=1
ora11rac2.undo_tablespace='UNDOTBS2'
ora11rac1.undo_tablespace='UNDOTBS1'
#以下為配置DG而添加的內容
*.db_unique_name='ora11rac'
*.log_archive_config='dg_config=(ora11rac,ora11dg)'
*.log_archive_dest_1='location=USE_DB_RECOVERY_FILE_DEST valid_for=(all_logfiles,all_roles) db_unique_name=ora11rac'
*.log_archive_dest_2='service=ora11dg valid_for=(online_logfiles,primary_role) db_unique_name=ora11dg'
*.log_archive_dest_state_1=enable
*.log_archive_dest_state_2=enable
*.log_archive_format='arc_%t_%s_%r.arc'
#為switchover或failover而設定的參數
*.fal_server=ora11dg
*.standby_file_management='auto'
*.db_file_name_convert='/u01/app/oracle/oradata/ora11dg/datafile','+DATA/ora11rac/datafile','/u01/app/oracle/oradata/ora11dg/datafile','+DATA/ora11rac/tempfile'
*.log_file_name_convert='/u01/app/oracle/oradata/ora11dg/datafile','+DATA/ora11rac/onlinelog','/u01/app/oracle/oradata/ora11dg/datafile','+BACKUPDG/ora11rac/onlinelog'
3.儲存退出後,執行以下命令:
SQL> create spfile='+DATA/ora11rac/spfileora11rac.ora' from pfile;
File created.
本來以為這樣就完成了我的預定目標->用pfile修改spfile,但是當我再startup啟動資料庫時,報了ORA-01506的錯誤
SQL> startup force
ORA-01506: missing or illegal database name
這個錯誤,按字面理解就是遺失資料庫名,就是參數中沒有db_name這項內容或者配置錯誤。
發生這個錯誤是因為沒有之前的建立spfile語句沒有指定pfile路徑所致。其實和單一實例本地路徑存放不同(單一實例環境直接執行create spifle from pfile是不會有問題的,因為這2個檔案都存放在$ORACLE_HOME/dbs路徑下),如果pfile不指定路徑,預設使用的只是dbs下的initora11rac1.ora去產生spfile,由於在ASM中,此檔案是用來指向ASM中spfile檔案的存放路徑,內容只有一句“+DATA/ora11rac/spfileora11rac.ora”,知道了問題所在,那麼把上面那條建立spifle的語句修改如下:
SQL> create spfile='+DATA/ora11rac/spfileora11rac.ora' from pfile='/rmanbackup/initora11rac.ora';
File created.
SQL> startup
ORACLE instance started.
Total System Global Area 835104768 bytes
Fixed Size 2232960 bytes
Variable Size 578817408 bytes
Database Buffers 251658240 bytes
Redo Buffers 2396160 bytes
Database mounted.
Database opened.
SQL> show parameter spfile
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
spfile string +DATA/ora11rac/spfileora11rac.
ora
此時再用spfile啟動正常,問題解決了。
總結:發現問題不要慌張,根據oracle的錯誤提示,去思考錯誤發生的原因,如果自己不能得出有效判斷,可以藉助一些手段,比如google,很多ora-xxxxx錯誤搜尋一下就能得出很多條結果,雖然產生的原因和解決的辦法不盡相同,但是我想說的是,可以為你提供一種思路。很多情況下,別人可以用的方法,可以執行的命令是ok的,但是到了自己的環境,卻不一定是一樣的。
以上的這個問題,其實是因為自己初學,對ASM的RAC環境還不夠熟悉所致,如果知道預設是去dbs使用pfile的這個規則,那麼很容易就能發現問題所在,而這個也是一個經驗積累的過程,碰到一個問題就解決一個,假以時日,你就會成為truble shooting的高手了。
----------------------------------------------------------------------
By aaron8219 Chinaunix Blog:http://blog.chinaunix.net/uid/24612962.html
原創文章,轉載請註明連結,謝謝!
http://blog.csdn.net/aaron8219/article/details/10030523