2013年2月10日

[Oracle]ORA-16139: media recovery required - Solution


ORA-16139: media recovery required

Discription :

Switch Over 成功之後,準備再做一次Switch Over,將DB回復成原本的角色時,
發生 ORA-16139的錯誤。如下:

SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY ;
ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY
*
ERROR at line 1:
ORA-16139: media recovery required

當時的Alert Log 如下:
Fri Feb  8 11:31:21 2013
ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY WITH SESSION SHUTDOWN
Fri Feb  8 11:31:21 2013
ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY
Database not recovered through End-Of-REDO
Database not recovered through End-Of-REDO
Switchover: Media recovery required - standby not in limbo
ORA-16139 signalled during: ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY WIT...

Cause :
在測試Data Guard Switch Over是否成功時,
我先在Primary Role的DB建立了一張 table ,
然後將Standby Role 的 DB 開啟至 Read Only,
確認Archive Log 確實有被 Recovery之後,便開始接著第二次Switch Over的步驟。
以還原成 DB 原本各自的角色。
問題便發生在此時。
因為Primary Role DB 還是會寫入一些系統所產生的 redo log
而這些Redo Log也會同時寫進Standby Role 的 redo log中,
所以在Standby Role DB 下了 Alter database open read only指令後,
這個時間點之後Primary Role DB所產生的所有redo log並沒有被standby role的 DB recover 到,
因而導致了兩者間的 redo log 不一致, Oracle便要求做一次回復,
所以產生了 ORA-16139: media recovery required 這樣的錯誤

Solution :
所以解決的辦法就是將standby roleDB shutdown immediate
重新將他以備庫的角色開啟,
並開啟至 recover managed standby database disconnect from session
成功後再繼續switch back的動作,便不會再發生此錯誤。

沒有留言:

張貼留言