聯系:手機(+86 13429648788) QQ(107644445)QQ咨詢惜分飛
標題:dul無法加載bootstrap實現unload table/user恢復
作者:惜分飛
最近有朋友誤操作引起了非常大的事故,差點吃了官司.在做數據庫遷移的時候,遠程誤操作刪除了原庫的system等幾個數據庫初始安裝的文件,而且該磁盤空間使用率非常高,還有少量寫入.
最后結果比較悲劇,通過文件系統層面無法直接恢復出來數據文件,而且該庫無任何有效備份,又沒有表名,列名等信息,無奈之下只能通過底層io block重組來恢復數據文件,可是悲劇又一次發生,這個磁盤上以前也有一份system等文件,最后經過多方重組恢復出來一份相對理想的數據文件.
但是第三方公司通過這樣重組出來的數據文件和未被刪除的業務文件恢復出來的數據大量有問題,依舊需要我們進一步分析恢復處理.
這篇文章主要描述了dul在無法加載bootstrap命令之后通過一些方法依舊可以正常使用unload table/user 等命令實現數據盡可能恢復.你要知道幾百張表沒有表名/列名要把他們區分出來那是什么樣的工作量……
在dul中配置system文件
D:/xifenfei/system01.dbfD:/TEMP/recover/dul/bak>dulData UnLoader: 11.2.0.0.4 - Internal Only - on Wed Sep 28 17:01:56 2016with 64-bit io functionsCopyright (c) 1994 2016 Bernard van Duijnen All rights reserved.Strictly Oracle Internal Use OnlyDUL> show datafiles;Sorry, no valid data files found in control.txt
使用默認的dul中數據文件配置方法,讓dul自己發現數據文件方法不可行
隨意表空間號和文件號dul識別
0 0 D:/xifenfei/system01.dbfD:/TEMP/recover/dul/bak>dulData UnLoader: 11.2.0.0.4 - Internal Only - on Wed Sep 28 17:00:27 2016with 64-bit io functionsCopyright (c) 1994 2016 Bernard van Duijnen All rights reserved.Strictly Oracle Internal Use OnlyDUL: Warning: File Type mismatch 1 != 8DUL: Warning: D:/xifenfei/system01.dbf Header tablespace number 3!= 0DUL: Warning: D:/xifenfei/system01.dbf Header relative file number 1 != 0Found db_id = 2948357999Found db_name = XIFENFEIDUL: Warning: Found mismatch while checking file D:/xifenfei/system01.dbfDUL: Warning: DUL osd_parameter or control.dul configuration errorDUL: Warning: Given file number(0) in control file does not match file# in dba(1)
通過這個識別我們可以知道system的表空間號為3,文件號為1
再次配置system讓dul識別
3 1 D:/xifenfei/system01.dbfD:/TEMP/recover/dul/bak>dulData UnLoader: 11.2.0.0.4 - Internal Only - on Wed Sep 28 17:03:46 2016with 64-bit io functionsCopyright (c) 1994 2016 Bernard van Duijnen All rights reserved.Strictly Oracle Internal Use OnlyDUL: Warning: File Type mismatch 1 != 8Found db_id = 2948357999Found db_name = XIFENFEIDUL> show datafiles;ts# rf# start blocks offs open err file name3 1 0 320257 0 1 0 D:/xifenfei/system01.dbf
dul正常識別出來system文件但是根據經驗我們知道tablespace 3肯定是有問題的,因此后續操作依舊問題非常多
嘗試dul bootstrap恢復失敗
DUL> bootstrap;Scanning SYSTEM tablespace to locate compatibility segment ...DUL: Warning: No files found for tablespace 0Reading EXT.dat 0 entries loaded and sorted 0 entriesReading SEG.dat 0 entries loadedReading COMPATSEG.dat 0 entries loadedReading SCANNEDLOBPAGE.dat 0 entries loaded and sorted 0 entriesDUL: Error: No compatibility segments found
由于表空間號錯誤,dul無法加載到bootstrap$表,另外根據bbed分析恢復出來的system文件中bootstrap$這部分丟失
嘗試人工加載dul所需數據字典
DUL> unload table OBJ$ 2 storage ( tablespace 3 segobjno 18 file 1 block 240);. unloading table OBJ$ 79074 rows unloadedDUL> unload table TAB$( OBJ# number, DATAOBJ# number,2 cluster C_OBJ#(OBJ#)3 storage ( tablespace 3 segobjno 2 tabno 1 file 1 block 144);. unloading table TAB$ 4482 rows unloadedDUL> unload table COL$ ( OBJ# number, COL# number , SEGCOL# number,2 cluster C_OBJ#(OBJ#)3 storage ( tablespace 3 segobjno 2 tabno 5 file 1 block 144);. unloading table COL$ 114491 rows unloadedDUL> unload table USER$2 cluster C_USER#(USER#)3 storage ( tablespace 3 segobjno 10 tabno 1 file 1 block 208);. unloading table USER$ 96 rows unloaded----其他表省略,根據需要的依次處理嘗試使用dul恢復數據DUL> desc portal_emr.BASEELEMENT;Table PORTAL_EMR.BASEELEMENTobj#= 87200, dataobj#= 87200, ts#= 9, file#= 7, block#=458tab#= 0, segcols= 8, clucols= 0Column information:icol# 01 segcol# 01 BENAME len 30 type 1 VARCHAR2 cs 852(ZHS16GBK)icol# 02 segcol# 02 TYPENAME len 30 type 1 VARCHAR2 cs 852(ZHS16GBK)icol# 03 segcol# 03 TYPETYPE len 22 type 2 NUMBER(0,0)icol# 04 segcol# 04 BEXMLTEXT len 4000 type 1 VARCHAR2 cs 852(ZHS16GBK)icol# 05 segcol# 05 DEPTGROUPCODE len 30 type 1 VARCHAR2 cs 852(ZHS16GBK)icol# 06 segcol# 06 ISCOMMON len 22 type 2 NUMBER(0,0)icol# 07 segcol# 07 BESPELL len 15 type 1 VARCHAR2 cs 852(ZHS16GBK)icol# 08 segcol# 08 ELEMTYPE len 22 type 2 NUMBER(0)DUL> show datafiles;ts# rf# start blocks offs open err file name3 1 0 320257 0 1 0 D:/xifenfei/system01.dbf9 7 0 4170425 0 1 0 D:/BaiduYunDownload/PORTAL_EMRDUL> unload table portal_emr.BASEELEMENT;. unloading table BASEELEMENT 1913 rows unloaded
這里描述了在dul無法加載bootstrap命令之后,通過人工加載數據字典實現正常的unload table/user功能,丟棄了一般處理思路中的只能通過scan 然后unload沒有表名,列名的處理方法,從而實現了恢復的最大化.
我們對原廠官方oracle dual工具有深入研究,如果在oracle dul恢復方面有搞不定的問題.
請聯系我們,提供專業ORACLE數據庫恢復技術支持
Phone:13429648788 Q Q:107644445 E-Mail:dba@xifenfei.com
以上所述是小編給大家介紹的dul無法加載bootstrap實現unload table/user恢復,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對武林網網站的支持!
新聞熱點
疑難解答