【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最快的磁盤,最好使用陣列。




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章