alter database create datafile導致未經處理資料檔案丟失
有客戶一個小系統找我們恢複,通過Oracle Database Recovery Check 檢測之後我們紅框部分發現一奇怪現象
1.檔案頭fuzzy為NO,不符合資料庫異常crash常識,也和其他檔案該狀態不匹配
2.檔案的建立時間,scn均和checkpoint時間,scn一致(也就是說該檔案是建立之後就checkpoint,然後就沒有其他動作)
3.檔案開始應用的歸檔為5,110和其他資料檔案要求的3115相差甚遠
結合這些情況,懷疑該檔案被重新建立,尋找alert日誌果如發現如下資訊
兩個檔案通過create datafile建立之後,然後offline操作.通過alert日誌核查file 6和8的建立時間和seq資訊
Fri Jan 16 15:03:36 2015
Thread 1 advanced to log sequence 5 (LGWR switch)
Current log# 2 seq# 5 mem# 0: D:\APP\ADMINISTRATOR\ORADATA\MYCHOICE\REDO02.LOG
Fri Jan 16 15:13:19 2015
CREATE BIGFILE TABLESPACE "FBAUDIT"
DATAFILE 'E:\ZDSoft\ZDFood\databak\FBAUDIT' SIZE 10M
AUTOEXTEND ON NEXT 10M
MAXSIZE UNLIMITED LOGGING EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO
Completed: CREATE BIGFILE TABLESPACE "FBAUDIT"
DATAFILE 'E:\ZDSoft\ZDFood\databak\FBAUDIT' SIZE 10M
AUTOEXTEND ON NEXT 10M
MAXSIZE UNLIMITED LOGGING EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO
Sat Feb 07 15:03:46 2015
Thread 1 advanced to log sequence 110 (LGWR switch)
Current log# 2 seq# 110 mem# 0: D:\APP\ADMINISTRATOR\ORADATA\MYCHOICE\REDO02.LOG
Sat Feb 07 15:20:41 2015
CREATE BIGFILE TABLESPACE "CARD"
DATAFILE 'E:\ZDSoft\ZDCARD\databak\CARD1' SIZE 10M
AUTOEXTEND ON NEXT 10M
MAXSIZE UNLIMITED LOGGING EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO
Completed: CREATE BIGFILE TABLESPACE "CARD"
DATAFILE 'E:\ZDSoft\ZDCARD\databak\CARD1' SIZE 10M
AUTOEXTEND ON NEXT 10M
MAXSIZE UNLIMITED LOGGING EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO
通過結合alert日誌判斷,我們可以確定,當前我們Oracle Database Recovery Check檢查出來的情況,是由於執行了create datafile命令導致故障前的檔案丟失,建立了一個新的資料檔案,而由於該庫為非歸檔模式,導致該檔案資料無法恢複(備忘:不光是非歸檔模式不行,就算是歸檔模式,也需要從檔案建立到現在的所有歸檔才行).在大部分生產系統,我相信不可能有這麼的歸檔,因為在執行alter database create datafile命令之時一定要謹慎,評估確定是否丟失歸檔,否則可能導致不可理的損壞).
客戶意識到了悲劇的發生,但是希望我們幫忙恢複一張核心資料,使用者的餘額資訊.
對於alter database create datafile丟失檔案恢複
過工具掃描原始檔案相關的記錄(由於寫入大量資料,無法完整恢複,只能通過工具掃描,恢複部分資料)[asm disk header 徹底損壞恢複]
因為原庫雖然丟失了這兩個檔案,但是已經open成功,通過相關的data obj結合這個裡面掃描到的檔案,抽取出來需要的對象的block,然後對block裡面的資料進行讀取恢複出來相關資料.在這裡我們還有一個痛點就是由於這兩個檔案都是bigfile,給恢複過程增加了難度
至此我們已經實現了對於alter database create datafile導致檔案丟失的核心資料的恢複.儘可能的減小的客戶的損壞.這種恢複是取決運氣,資料在磁碟上的block沒有被覆蓋.如果覆蓋了基本無望.
如果需要資料庫恢複,請聯絡我們(ORACLE資料庫恢複支援人員),將為您提供專業資料庫支援人員:
Phone:13429648788 Q Q:107644445 E-Mail:dba@xifenfei.com
再次提醒
1.在資料庫出現故障之時,儘可能保護現場,做操作之前要之後後果別百度了就不分青紅皂白的直接操作,導致無法復原的破壞,資料可能永久性丟失[Oracle異常恢複前備份保護現場建議—FileSystem環境|Oracle異常恢複前備份保護現場建議—ASM環境
2.使用alter database create datafile命令之前需要謹慎,評估是否所有的歸檔都存在