缺少歸檔導致不完整恢復
簡單介紹一次客戶由於缺少歸檔造成資料丟失的案例。
分享一個案例:客戶的一個測試資料庫要遷移到另一臺伺服器上,客戶DBA在將資料庫備份到帶庫後,對原資料庫伺服器進行了格式化。
當DBA在目標伺服器上進行資料庫的恢復時發現了問題。資料庫的備份雖然成功完成,但是隨後的歸檔日誌的備份由於報錯失敗了。現在只有一個全庫的熱備份,而沒有任何歸檔日誌的備份。目前已經不是丟失資料的問題了,而是缺少一致性的備份,資料庫根本無法開啟。
當然這個案例的恢復對於我們來說不算什麼困難的事情,全庫恢復後,直接RECOVER UNTIL CANCEL,嘗試直接OPEN RESETLOGS,會出現錯誤:
SQL> conn / as sysdba
Connected.
SQL> alter database open read only;
alter database open read only
*
ERROR at line 1:
ORA-16004: backup database requires recovery
ORA-01152: file 1 was not restored from a sufficiently old backup
ORA-01110: data file 1: '/oradata/orcl/system01.dbf'
透過新增“_allow_resetlogs_corruption”=true,然後RECOVER DATABASE USING BACKUP CONTROLFILE UNTIL CANCEL;最後透過ALTER DATABASE OPEN RESETLOGS開啟。
資料庫開啟後,很快就會由於嘗試恢復UNDO中的資訊導致資料庫的再次DOWN掉:
Mon Jan 16 14:27:05 2012
Errors in file /oracle/admin/orcl/bdump/orcl_smon_53215672.trc:
ORA-00600: internal error code, arguments: [4137], [], [], [], [], [], [], []
Opening with internal Resource Manager plan
where NUMA PG = 1, CPUs = 48
replication_dependency_tracking turned off (no async multimaster replication
found)
Starting background process QMNC
QMNC started with pid=40, OS id=40239468
Mon Jan 16 14:27:06 2012
ORACLE Instance orcl (pid = 13) - Error 600 encountered while recovering
transaction (9, 7).
Mon Jan 16 14:27:06 2012
Errors in file /oracle/admin/orcl/bdump/orcl_smon_53215672.trc:
ORA-00600: internal error code, arguments: [4137], [], [], [], [], [], [], []
Mon Jan 16 14:27:07 2012
ORA-01555 caused by SQL statement below (SQL ID: 5wc2915k44m38, Query
Duration=0 sec, SCN: 0x0000.003bd268):
Mon Jan 16 14:27:07 2012
select user#,type# from user$ where name=:1
Mon Jan 16 14:27:07 2012
LOGSTDBY: Validating controlfile with logical metadata
Mon Jan 16 14:27:07 2012
LOGSTDBY: Validation complete
Completed: alter database open resetlogs
Mon Jan 16 14:32:12 2012
Errors in file /oracle/admin/orcl/bdump/orcl_smon_53215672.trc:
ORA-00600: internal error code, arguments: [4137], [], [], [], [], [], [], []
Mon Jan 16 14:32:13 2012
ORACLE Instance orcl (pid = 13) - Error 600 encountered while recovering
transaction (9, 7).
Mon Jan 16 14:32:13 2012
Errors in file /oracle/admin/orcl/bdump/orcl_smon_53215672.trc:
ORA-00600: internal error code, arguments: [4137], [], [], [], [], [], [], []
Mon Jan 16 14:37:15 2012
Errors in file /oracle/admin/orcl/bdump/orcl_smon_53215672.trc:
ORA-00600: internal error code, arguments: [4137], [], [], [], [], [], [], []
Mon Jan 16 14:37:16 2012
ORACLE Instance orcl (pid = 13) - Error 600 encountered while recovering
transaction (9, 7).
Mon Jan 16 14:37:16 2012
Errors in file /oracle/admin/orcl/bdump/orcl_smon_53215672.trc:
ORA-00600: internal error code, arguments: [4137], [], [], [], [], [], [], []
Mon Jan 16 14:42:17 2012
Errors in file /oracle/admin/orcl/bdump/orcl_smon_53215672.trc:
ORA-00600: internal error code, arguments: [4137], [], [], [], [], [], [], []
Mon Jan 16 14:42:18 2012
ORACLE Instance orcl (pid = 13) - Error 600 encountered while recovering
transaction (9, 7).
Mon Jan 16 14:42:18 2012
Errors in file /oracle/admin/orcl/bdump/orcl_smon_53215672.trc:
ORA-00600: internal error code, arguments: [4137], [], [], [], [], [], [], []
Mon Jan 16 14:47:19 2012
Errors in file /oracle/admin/orcl/bdump/orcl_smon_53215672.trc:
ORA-00600: internal error code, arguments: [4137], [], [], [], [], [], [], []
Mon Jan 16 14:47:20 2012
Errors in file /oracle/admin/orcl/bdump/orcl_pmon_58655160.trc:
ORA-00474: SMON process terminated with error
Mon Jan 16 14:47:20 2012
PMON: terminating instance due to error 474
Instance terminated by PMON, pid = 58655160
對於這個錯誤,可以透過設定EVENTS 10513來避免後臺PMON程式進行資料庫的事務回滾,也可以透過設定_CORRUPTED_ROLLBACK_SEGMENTS來避免這個錯誤的產生。
再次重啟後,透過EXP匯出全庫,重建資料庫後匯入即可。
其實這裡想要探討的並非是恢復技術本身,而是備份策略以及備份有效性檢查的重要性。DBA在備份完成後,只需要簡單的看一下備份輸出的LOG檔案,就可以馬上判斷備份是否完整,可惜的是,就是這個簡單的確認操作沒有進行,導致了最終重啟資料庫且丟失資料的損失。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4227/viewspace-717874/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Production DB expdp 導致standby歸檔恢復時混亂
- 缺少log_archive_config導致歸檔路徑被禁用Hive
- 恢復之非歸檔模式下的恢復模式
- rman datafile恢復(歸檔模式)模式
- SQL SEVER 缺少LOG檔案資料庫恢復SQL資料庫
- 缺少歸檔日誌,ORACLE資料庫恢復使用_allow_resetlogs_corruption引數Oracle資料庫
- 磁碟損壞導致資料檔案丟失的恢復
- DG歸檔日誌缺失恢復
- 無備份恢復(歸檔模式)模式
- ORACLE非歸檔下的恢復Oracle
- 【備份恢復】恢復 丟失已歸檔重做日誌檔案
- 恢復案例:無歸檔,掉電,控制檔案全部丟失恢復
- 歸檔日誌無法歸檔導致資料庫hang住資料庫
- 恢復案例:歸檔模式下丟失全部資料檔案的恢復模式
- 恢復案例:無歸檔,丟失全部控制檔案、日誌檔案恢復案例
- 非歸檔模式恢復資料庫模式資料庫
- Data Guard跳歸檔恢復的案例
- 只有冷備和歸檔,能否恢復?
- standby缺失primary歸檔,手工同步恢復
- 【恢復】非歸檔模式下因誤刪除資料檔案導致資料庫無法OPEN的故障處理模式資料庫
- 恢復歸檔日誌檔案的常用方法
- oracle rac歸檔使用nfs 導致oracle hungOracleNFS
- rman恢復--歸檔模式有備份,丟失資料檔案的恢復模式
- rman恢復--歸檔模式無備份,丟失資料檔案的恢復模式
- 【備份恢復】非歸檔模式下丟失任意資料檔案 恢復操作模式
- oracle dg 歸檔日誌恢復情況Oracle
- 基於歸檔的冷備份恢復
- 無歸檔日誌恢復rman資料
- 備庫跳歸檔恢復的有趣案例
- 冷備份+歸檔日誌的恢復
- oracle RMAN 非歸檔資料庫恢復Oracle資料庫
- 【BBED】丟失歸檔檔案情況下的恢復
- 在歸檔下恢復系統資料檔案
- 利用歸檔來做資料檔案的恢復
- 非歸檔丟失日誌檔案的恢復
- 10g關閉歸檔/啟用閃回恢復區歸檔
- 誤刪歸檔日誌除導致備份歸檔日誌失敗
- 歸檔空間不足導致例項死鎖