跨文件系統下的dataguard,數據文件無法創建的解決

數據庫版本:11.2.0.4

操作系統: primary:redhat linux 5.9

           standby:redhat linux 5.6

primary DB: rac + ASM 

standby DB: 單節點 + 文件系統

因爲主庫使用了asm 文件系統,asm下創建表空間和添加數據文件,文件名默認後綴爲會話線程號,而這些以線程號命名的文件,

在通過日誌傳輸到standby 數據庫時,備庫不能正常創建同名的文件,因此備庫在應用主庫傳輸過來的文件時會出錯,並進一步倒是備庫的recover 進程中斷。

下面命令的輸出結果中,以數字命名的文件時通過duplicate 的方式複製到備庫的,文件6爲備庫通過主庫新增數據庫文件的sql 進行recover 生成,

由於備庫使用文件系統存儲,因此備庫無法正常創建數據文件,查詢v$datafile查詢出來的文件名,在操作系統中實際上並未生成,oracle 只是修改了數據字典而已。



standby@ SYS> select file#,name from v$datafile;


     FILE# NAME

---------- ------------------------------------------------------------

         1 /oradata1/oracle/oradata/system.256.852462171

         2 /oradata1/oracle/oradata/sysaux.257.852462171

         3 /oradata1/oracle/oradata/undotbs1.258.852462171

         4 /oradata1/oracle/oradata/users.259.852462173

         5 /oradata1/oracle/oradata/undotbs2.264.852462315

         6 /home/oracle/app/product/11.1/db_1/dbs/UNNAMED00006


6 rows selected.


Elapsed: 00:00:00.00

standby@ SYS>  alter system set standby_file_management = manual;


System altered.


Elapsed: 00:00:00.00


standby@ SYS> alter database  create datafile 6 as '/home/oracle/app/product/11.1/db_1/dbs/UNNAMED00006.dbf';


Database altered.


Elapsed: 00:00:00.05

standby@ SYS> select file#,name from v$datafile;


     FILE# NAME

---------- ------------------------------------------------------------

         1 /oradata1/oracle/oradata/system.256.852462171

         2 /oradata1/oracle/oradata/sysaux.257.852462171

         3 /oradata1/oracle/oradata/undotbs1.258.852462171

         4 /oradata1/oracle/oradata/users.259.852462173

         5 /oradata1/oracle/oradata/undotbs2.264.852462315

         6 /home/oracle/app/product/11.1/db_1/dbs/UNNAMED00006.dbf


6 rows selected.


Elapsed: 00:00:00.00

----------------

在操作系統中執行以下命令,將create的datafile複製爲規範的文件名——與主庫文件同名(asm除外)

[oracle@standby01 oradata]$ cp /home/oracle/app/product/11.1/db_1/dbs/UNNAMED00006.dbf    /oradata1/oracle/oradata/users_01.dbf

-----------

standby@ SYS> alter database rename file '/home/oracle/app/product/11.1/db_1/dbs/UNNAMED00006.dbf' to '/oradata1/oracle/oradata/users_01.dbf';


Database altered.


Elapsed: 00:00:00.01

standby@ SYS> select file#,name from v$datafile;


     FILE# NAME

---------- ------------------------------------------------------------

         1 /oradata1/oracle/oradata/system.256.852462171

         2 /oradata1/oracle/oradata/sysaux.257.852462171

         3 /oradata1/oracle/oradata/undotbs1.258.852462171

         4 /oradata1/oracle/oradata/users.259.852462173

         5 /oradata1/oracle/oradata/undotbs2.264.852462315

         6 /oradata1/oracle/oradata/users_01.dbf


6 rows selected.


Elapsed: 00:00:00.00

至此數據文件在名稱和格式上已經和主庫一致了,但由於數據文件是create出來的沒有數據,需要利用歸檔日誌進行recover

standby@ SYS> recover automatic standby database ;

ORA-00279: change 11876832 generated at 08/13/2014 18:05:51 needed for thread 1

ORA-00289: suggestion : /oradata1/arch/1_328_852462251.dbf

ORA-00280: change 11876832 for thread 1 is in sequence #328

ORA-00278: log file '/oradata1/arch/1_328_852462251.dbf' no longer needed for this recovery

ORA-16145: archival for thread# 1 sequence# 328 in progress

Specify log: {<RET>=suggested | filename | AUTO | CANCEL}

AUTO

ORA-16145: archival for thread# 1 sequence# 328 in progress



standby@ SYS> 

standby@ SYS> alter database recover managed standby database disconnect;


Database altered.

最後記得將standby_file_management參數值改回auto。

standby@ SYS>  alter system set standby_file_management = auto;


System altered.


Elapsed: 00:00:00.00

問題解決。


在恢復過程中可能遇到的問題:

問題一、

ORA-01275: Operation CREATE DATAFILE is not allowed if standby file management is automatic.

此問題是由於standby 數據庫中standby_file_management參數設置爲auto,修改爲manual 就可。

  alter system set standby_file_management = manual;

  

問題二、

ORA-01511: error in renaming log/data files

ORA-01121: cannot rename database file 15 - file is in use or recovery

此問題是由於需要rename的文件正在被使用,在rac系統中可以將rac 的另一個實例停掉, 當前實例如果在open 狀態下的話,可重啓到mount狀態下。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章