記錄一次 Oracle DG 異常停庫問題解決過程
某醫院有以下架構的雙節點 Oracle 集群:
節點1:172.16.20.2
節點2:172.16.20.3
SCAN IP:172.16.20.1
DG:172.16.20.120
6月12日,醫院信息科用戶反映無法連接 DG 服務器。
登錄 DG 服務器查看發現數據庫處于關閉狀態。然后實用 startup 命令啟動數據庫。發現數據庫無法啟動,并且報如下錯誤:
SQL> alter database open read only;
alter database open read only
*
ERROR at line 1:
ORA-10458: standby database requires recovery
ORA-01152: file 1 was not restored from a sufficiently old backup
ORA-01110: data file 1: '+DATA/hisdb/datafile/sysaux01.dbf'
在網上找了各種解決方案,最后都無法解決。
其中有一篇文章說是 DG 服務器宕機后由于數據庫的 SCN 與主庫的 SCN 不一致導致無法啟動。
決定采用如下方法解決該問題:
步驟1:查看 DG 備庫的歸檔日志。
發現 DG 備庫中最后的歸檔日志為 6 月 10 日。
步驟2:查看主庫的歸檔日志。把 6 月 10 日以后的歸檔日志全部復制到備庫的歸檔日志目錄中。
步驟3:在備庫中打開 rman,執行如下命令:
rmam> recover database;
在 rman 中執行 recover 命令時若果缺少相應的歸檔日志,可以從主庫中復制過來,重新執行 recover database 命令。
執行完畢后發現 DG 備庫可以啟動到 open 狀態。
步驟4:查看備庫和 DG 相關的進程,發現沒有 RFS 進程。原因是 DG 備庫的監聽沒有啟動。
實用如下命令打開備庫的監聽:
lsnrctl start
重新查看備庫和 DG 相關的進程,出現 RFS 進程,測試 DG 同步情況,問題解決。