Oracle備庫宕機啓動解決方案

簡介

ORA-10458: standby database requires recovery
ORA-01196: 文件 1 因爲介質恢復會話失敗而不一致
ORA-01110: 數據文件 1: 'XXXXXXXXXXXXXXXXXX\XXXXX1.DBF'linux

一個項目作了Oracle主從數據庫同步,經過Dataguard實現,從庫服務器宕機,再開機的時候,從庫沒法啓動,報「ORA-01196: 文件 1 因爲介質恢復會話失敗而不一致」這個錯誤,具體日誌信息以下:sql

ORA-10458: standby database requires recovery
ORA-01196: 文件 1 因爲介質恢復會話失敗而不一致
ORA-01110: 數據文件 1: 'XXXXXXXXXXXXXXXXXX\XXXXX1.DBF'

正常啓動的順序應該是先啓動備庫再啓動主庫。因爲從庫宕機致使有段時間日誌未同步,主備不一致,從庫沒法啓動。數據庫

參考資料

https://blog.csdn.net/linux_wang130/article/details/38870363服務器

恢復前準備

備份主庫

備份主庫數據【/home/oracle/backup/20190506/】session

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;

檢查日誌文件

恢復以前須要瞭解當前備庫的數據庫文件、日誌文件,查看主備庫是否一致【如不一致須要拷貝】。oracle

SQL> set linesize 300
SQL> col MEMBER for a60
SQL> select type,member from v$logfile;

image.png

檢查數據庫文件

SQL> select name from v$datafile;

image.png

備庫恢復

關閉備庫,並啓動了實例,加載數據庫,可是數據庫沒有打開。打開日誌進程app

shutdown immediate
startup mount;
alter database recover managed standby database using current logfile disconnect from session;

主庫操做

alter system switch logfile;
強制日誌切換,不必定就歸檔當前的重作日誌文件(若自動歸檔打開,就歸檔前的重作日誌,若自動歸檔沒有打開,就不歸檔當前重作日誌。)ui

alter system switch logfile;

多操做幾回,操做以後,稍等一段時間,時間視網速而定,過一段時間後,在主庫上查詢一下同步狀況:.net

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;
相關文章
相關標籤/搜索