這篇文章主要給大家介紹了關於Oracle備庫宕機啓動的完美解決方案,文中通過示例代碼介紹的非常詳細,對大家學習或者使用Oracle具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
簡介
ORA-10458: standby database requires recovery
ORA-01196: 文件 1 由於介質恢復會話失敗而不一致
ORA-01110: 數據文件 1: 'XXXXXXXXXXXXXXXXXX\XXXXX1.DBF'
一個項目做了Oracle主從數據庫同步,通過Dataguard實現,從庫服務器宕機,再開機的時候,從庫無法啓動,報“ORA-01196: 文件 1 由於介質恢復會話失敗而不一致”這個錯誤,具體日誌信息如下:
ORA-10458: standby database requires recovery
ORA-01196: 文件 1 由於介質恢復會話失敗而不一致
ORA-01110: 數據文件 1: 'XXXXXXXXXXXXXXXXXX\XXXXX1.DBF'
正常啓動的順序應該是先啓動備庫再啓動主庫。由於從庫宕機導致有段時間日誌未同步,主備不一致,從庫無法啓動。
參考資料
https://www.jb51.net/article/160838.htm
恢復前準備
備份主庫
備份主庫數據【/home/oracle/backup/20190506/】
mkdir /home/oracle/backup/20190506
sqlplus / as sysdba SQL> create directory data_dir as '/home/oracle/backup/20190506';
expdp SYSTEM/密碼@orcl schemas=用戶名 dumpfile=bak20190506.dmp directory=data_dir logfile=bak20190506.log;
檢查日誌文件
恢復之前需要了解當前備庫的數據庫文件、日誌文件,查看主備庫是否一致【如不一致需要拷貝】。
SQL> set linesize 300 SQL> col MEMBER for a60 SQL> select type,member from v$logfile;
檢查數據庫文件
SQL> select name from v$datafile;
備庫恢復
關閉備庫,並啓動了實例,加載數據庫,但是數據庫沒有打開。打開日誌進程
shutdown immediate startup mount; alter database recover managed standby database using current logfile disconnect from session;
主庫操作
alter system switch logfile;
強制日誌切換,不一定就歸檔當前的重做日誌文件(若自動歸檔打開,就歸檔前的重做日誌,若自動歸檔沒有打開,就不歸檔當前重做日誌。)
alter system switch logfile;
多操作幾次,操作之後,稍等一段時間,時間視網速而定,過一段時間後,在主庫上查詢一下同步情況:
select name,sequence#,archived,applied from v$archived_log order by sequence#;
如果返回結果"APPLIED"都是“YES”或者只有最後一個是“NO”的話,說明全部歸檔日誌全部已經歸檔完了
,此時到備庫上上操作
啓動備庫
alter database recover managed standby database cancel; alter database open; alter database recover managed standby database using current logfile disconnect from session;
總結
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對神馬文庫的支持。