重做日誌檔案損壞測試
重做日誌檔案損壞測試
參考:http://blog.chinaunix.net/uid-17143914-id-2824664.html
資料庫的所有增、刪、改都會記錄入重做日誌。如果當前啟用的重做日誌檔案損壞,會導致資料庫異常關閉。非啟用的重做日誌最終也會因為日誌切換變為啟用的重做日誌,所以損壞的非啟用的重做日誌最終也會導致資料庫的異常終止。在ipas/mSwitch中每組重做日誌只有一個成員,所以在下面的分析中只考慮重做日誌組損壞的情況,而不考慮單個重做日誌成員損壞的情況。
一、確定損壞的重做日誌的位置及其狀態:
1. 如果資料庫處於可用狀態:
select * from v$logfile;
select * from v$log;
2. 如果資料庫處於已經異常終止:
startup mount;
select * from v$logfile;
select * from v$log;
其中,logfile的狀態為INVALID表示這組日誌檔案出現已經損壞;log狀態為Inactive:表示重做日誌檔案處於非啟用狀態;Active:表示重做日誌檔案處於啟用狀態;Current:表示是重做日誌為當前正在使用的日誌檔案。
二、損壞的日誌檔案處於非啟用狀態:
1. 刪除相應的日誌組:
alter database drop logfile group 4;
2. 重新建立相應的日誌組:
alter database add logfile group 4 ('/oracle/app/oracle/oradata/orcl/redo41.log','/oracle/app/oracle/oradata/orcl/redo42.log') size 50m;
alter database add logfile member '/oracle/app/oracle/oradata/orcl/redo43.log' to group 4;
三、損壞的日誌檔案處於啟用狀態且為非當前日誌:
1. 清除相應的日誌組:
alter database clear unarchived logfile group group_number;
操作後,該日誌組狀態為“UNUSED”;
如rm日誌組中一個檔案,切換日誌後臺日誌會報錯,將資料庫重啟到mount狀態,clear 後,將自動建立剛才刪除的日誌檔案;
如不做處理,重新啟動資料庫,會報如下錯誤,直接退出啟動程式;
Tue Apr 12 18:06:00 2016
ARC1 started with pid=21, OS id=18715
USER (ospid: 18711): terminating the instance due to error 313
System state dump requested by (instance=1, osid=18711), summary=[abnormal instance termination].
System State dumped to trace file /oracle/app/oracle/diag/rdbms/orcl/orcl/trace/orcl_diag_18681_20160412180600.trc
Dumping diagnostic data in directory=[cdmp_20160412180600], requested by (instance=1, osid=18711), summary=[abnormal instance termination].
Instance terminated by USER, pid = 18711
四、損壞的日誌檔案為當前活動日誌檔案:
用命令清除相應的日誌組:
alter database clear unarchived logfile group group_number;
如果清除失敗,則只能做基於時間點的不完全恢復。
開啟資料庫並且用適當的方法進行資料庫全備份:
alter database open;
五、歸檔模式,資料庫open狀態、當前正在使用的日誌檔案損壞,並且異常關閉資料庫。
建立兩個測試表後,
刪除當前的redo log;
shutdown abort
startup
報錯:
解決辦法:
這時候我們有兩種辦法,一種是使用備份進行恢復,另一種是使用隱含引數。介紹第二種:
該引數是在資料庫不一致的情況下,設定後允許資料庫啟動,然後重置日誌檔案。
alter system set "_allow_resetlogs_corruption"=true scope=spfile;
恢復預設值:alter system reset "_allow_resetlogs_corruption" scope=spfile;
sys@ORCL> shutdown immediate
ORACLE instance shut down.
sys@ORCL> startup
報錯;
sys@ORCL> select status from v$instance;
STATUS
------------
MOUNTED
sys@ORCL> select * from v$log;
alter database open resetlogs;
ORA-01139: RESETLOGS option only valid after an incomplete database recovery
需要這樣:
sys@ORCL> recover database until cancel;
ORA-00279: change 2922743 generated at 04/12/2016 17:39:18 needed for thread 1
ORA-00289: suggestion : /oracle/app/oracle/fast_recovery_area/ORCL/archivelog/2016_04_12/o1_mf_1_9_%u_.arc
ORA-00280: change 2922743 for thread 1 is in sequence #9
Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
cancel
ORA-01547: warning: RECOVER succeeded but OPEN RESETLOGS would get error below
ORA-01194: file 1 needs more recovery to be consistent
ORA-01110: data file 1: '/oracle/app/oracle/oradata/orcl/system01.dbf'
ORA-01112: media recovery not started
alter database open resetlogs;
丟失剛才建立當前redolog的測試表;
resetlog後重建redo日誌;
重建例項然後使用expdp和impdp,將資料匯出在匯入資料庫
SQL> create directory expdp as '/opt/app/oracle/oradata';
然後匯出資料重建資料庫,再匯入資料。
總結:對於當前正在使用的日誌的損壞,一般透過備份來修復,如果不行只能採用第二種設定隱含引數_allow_resetlogs_corruption來恢復。
六、總結,對於不是當前使用的歸檔日誌損壞,歸檔模式需要使用alter database clear unarchived 命令清空日誌組即可。
對於非歸檔模式需要使用alter system clear日誌檔案組即可。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29519108/viewspace-2079956/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle11g redo log 建立、新增、刪除(重做日誌組,重做日誌檔案)Oracle
- 記錄一則clear重做日誌檔案的案例
- 重做日誌管理
- MySQL 修改InnoDB重做日誌檔案的數量或大小MySql
- Android測試日誌檔案抓取與分析Android
- ibdata1檔案損壞時恢復InnoDB單表測試
- 控制檔案損壞處理
- MySQL重做日誌(redo log)MySql
- 達夢資料庫DM8之REDOLOG重做日誌檔案管理資料庫
- Archived Redo Logs歸檔重做日誌介紹及其優點Hive
- Oracle 控制檔案損壞解決方案Oracle
- linux檔案系統損壞如何修復Linux
- system資料檔案頭損壞修復
- 當前日誌損壞的案例(轉)
- 【MySQL日誌】MySQL日誌檔案初級管理MySql
- MySQL重做日誌恢復資料的流程MySql
- Android測試三件套:傳檔案、抓包、看日誌Android
- 測試,ogg從歸檔日誌中抽取資料
- java專案日誌配置檔案Java
- InterBase資料庫檔案損壞的修復方法資料庫
- MySQL InnoDB日誌檔案配置MySql
- sybase iq日誌檔案管理
- 日誌檔案過大清理
- git rebase重定基時衝突,檔案損壞出現HEAD標誌一鍵刪除Git
- u盤檔案損壞怎麼恢復資料 u盤恢復損壞資料的有效方法
- Laravel 指定日誌檔案記錄任意日誌Laravel
- SpringBoot指定日誌檔案和日誌Profile功能Spring Boot
- nginx日誌配置檔案說明Nginx
- linux 日誌log檔案 截斷Linux
- tempdb日誌檔案暴增分析
- lumen 日誌按天生成檔案
- 日誌檔案使用小結(轉)
- 探究MySQL中的日誌檔案MySql
- mysql的日誌檔案詳解MySql
- 日誌損壞時,加入隱含引數開啟資料庫的總結資料庫
- Oracle 無備份情況下undo檔案損壞處理Oracle
- 修復損壞的gzip壓縮檔案之原理篇
- 測試在丟失歸檔日誌的情況下,跳過部分歸檔日誌進行資料恢復資料恢復
- 織夢資料庫配置檔案資料庫損壞:嘗試修復資料庫資料庫