【oracle11g,11】redo日誌文件2 :日誌恢復 (重點)
1.有多個日誌成員,刪除當前日誌組一個成員: 數據庫仍能啓動,
告警日誌中報錯找不到日誌文件。
ORA-00313: open failed for members of log group 1 of thread 1
ORA-00312: online log 1 thread 1: '/u01/app/oracle/oradata/prod/disk1/redo01.log'
解決:
SQL>alter system switch logfile;
SQL>alter system checkpoint;
SQL> alter database drop logfile member '/u01/app/oracle/oradata/prod/disk1/redo01.log';
SQL> alter database add logfile member '/u01/app/oracle/oradata/prod/disk1/redo01.log'
to group 1;
2.刪除inactive非當前日誌組的所有成員: 數據庫無法啓動。
解決方案1:執行clear操作,重新建立空白的日誌文件
數據庫mount階段,執行clear
SQL> alter database clear logfile group 4;
SQL> alter database open ;
解決方案2:執行drop操作:
SQL> alter database drop logfile group 4;
3.刪除當前日誌組的所有成員並且正常關庫: 數據庫無法啓動
由於是正常關庫,所以會已經寫過髒塊了。
oracle 10g 解決:
oracle 10g在恢復當前日誌組時,不讓clear 或者drop當前的日誌組,只能做不完全恢復。
#使用不完全恢復, until cancel:表示應用日誌到日誌斷層的地方。
SQL> recover database until cancel;
#必須使用resetlogs 開庫,
SQL> alter database open resetlogs;
oracle 11g解決:
oracle 11g在恢復當前日誌組時,可以執行clear 或者drop日誌組,因爲是正常關庫oracle
已經寫了髒苦塊。
SQL> alter database clear logfile group 2;
#在歸檔模式下
用alter database clear logfile命令嘗試重構logfile group 1,失敗;
SQL> alter database clear logfile group 1;
alter database clear logfile group 1
*
ERROR at line 1:
ORA-00350: log 1 of instance orcl (thread 1) needs to be archived
ORA-00312: online log 1 thread 1: '/u02/oradata/orcl/redo01.log'
失敗的原因是group 1還沒有歸檔,需要加上”unarchived”參數;
SQL> alter database clear unarchived logfile group 1;
Database altered.
建議clear,特別是強行clear後作一次數據庫的全備份。
4.刪除當前日誌組的所有成員並且非正常關庫: 數據庫無法啓動
使用不完全恢復 recover database until cancel 無法恢復。
解決辦法:
首選方法:如果有備份可以使用備份恢復,(備份恢復時解決)。
方法2:使用_allow_resetlogs_corruption=true隱藏參數啓動數據庫,將數據中文件導出,當使用了隱藏參數,數據庫完整性被破壞,數據庫不能再繼續使用,需要建立新的數據庫將數據文件導進去。
日誌文件存儲:日誌文件很重要,最好使用io最快的磁盤,最好使用陣列。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.