DUL恢復資料庫過程

lilong發表於2008-05-26
本文是本人使用DUL工具恢復Oracle資料庫的一次過程...... [@more@]

單位資料庫出現故障,只能mount,不能open,想盡一切辦法也沒能啟動。我判斷資料檔案並沒有損壞,出錯的可能是系統檔案,非歸檔模式沒有任何備份!因此想起最後一招:Dul。在網上尋找很長時間才找到這個Oracle內部密不外傳的工具,全部希望都寄託在她身上了。dul工具僅僅就是一個不到200k的可執行檔案,我的資料庫是8.1.7,Dul也需要是對應8版本的dul8.exe 。下面簡要的記錄一下恢復過程:

1. 首先建配置檔案init.dul

osd_big_endian_flag=false
osd_dba_file_bits=10
osd_c_struct_alignment=32
osd_file_leader_size=1
osd_word_size = 32
dc_columns=2000000
dc_tables=10000
dc_objects=1000000
dc_users=400
dc_segments=100000
control_file = control.txt
db_block_size=8192
export_mode=true
compatible=8
file = dump

2. 建立控制檔案Control.txt,方法如下:

> connect internal
> spool control.txt
> select ts#, rfile#, name from v$datafile ;
> spool off

刪除RBS、TEMP所屬的Datafile。
如果SYSTEM 所屬的Datafile壞了,也將它刪除。
如果檔案超過2G,必須要分割,使其小於2G。
將control_orcl.dul內容要改成:

5 6 bigdatafile.dbf startblock 1 endblock=1000000
5 6 bigdatafile.dbf startblock=1000001 endblock=2000000
5 6 bigdatafile.dbf startlock=2000001 endblock=2550000

3. 生成資料字典dict.ddl

執行dul
>scan database; # build segment map and locate compatibility segment
restart dul # load the just generated files
bootstrap; # find location of bootstrap$ in comp segment and unload
restart dul # load the just generated files
bootstrap generate; # generate dict.ddl for first four tables
@dict.ddl # unload the first four tables
restart dul # load the just generated files
bootstrap generate; #generate dict.ddl for all tables
@dict.ddl # unload all dictionary tables
restart dul # now your ready to go

4. 讀取資料

dul dict.ddl
>unload database

完成。
幸好有DUL這樣的工具,感謝幫助過我的人們,最後提醒大家備份是最重要的!!!

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/18966/viewspace-1004617/,如需轉載,請註明出處,否則將追究法律責任。

相關文章