使用PRM-DUL進行ORACLE數據庫恢復
在D公司中,一位SA系統管理員不小心誤刪除了某個數據庫的SYSTEM表空間所在的數據文件,導致整個數據庫無法打開且數據無法獲取。在沒有備份的情況下,可以使用PRM-DUL工具來接近100%的恢復數據。
在D公司中,一位SA系統管理員不小心誤刪除了某個數據庫的SYSTEM表空間所在的數據文件,導致整個數據庫無法打開且數據無法獲取。在沒有備份的情況下,可以使用PRM-DUL工具來接近100%的恢復數據。
選擇Non-Dictionary模式
當使用No-dictionary模式時,用戶需要指定字符集和國家字符集,因為丟失了SYSTEM表空間后,數據庫的字符集信息無法正常獲得,所以需要用戶輸入正確的字符集設置,并安裝必要的語言包。只有這樣才能保證在No-Dictionary模式下正常抽取多國語言。
執行SCAN操作
與第一個場景類似,輸入所有可用的數據文件(不包括臨時文件),并設置正確的Block Size和OFFSET后,點擊SCAN按鈕。SCAN操作的作用是掃描所有數據文件上的Segment Header,并記錄到SEG.DAT和EXT.DAT中。在ORACLE中,一個非分區表或一個分區表的每個分區都對應著一個SEGMENT HEADER數據段頭。通過掃描EXTENT MAP信息,可以獲取到該表上的全部記錄。
例如,如果一張非分區的單表存放在由兩個數據文件組成的表空間上,其中SEGMENT HEADER和一半的數據存放在A數據文件上,另一半數據存放在B數據文件上。但由于某些原因,SYSTEM表空間和存放SEGMENT HEADER的A數據文件都丟失了,只剩下B數據文件。此時,如果希望僅恢復B數據文件上該表的數據,則不能依賴于SEGMENT HEADER,而只能依賴于從B數據文件上掃描的盤區圖EXTENT MAP信息。為了同時滿足基于SEGMENT HEADER和EXTENT MAP數據的No-Dictionary模式恢復需要,SCAN操作會填充SEG.DAT和EXT.DAT兩個文件,并記錄到DERBY數據庫中。
使用Scan Tables From Segments模式
完成SCAN操作后,主界面左側會出現數據庫圖標。此時可以選擇兩種模式:Scan Tables From Segments和Scan Tables From Extents。
Scan Tables From Segments模式適用于丟失了SYSTEM表空間,但所有的應用數據表空間均存在的情況。而Scan Tables From Extents模式不適用于Dictionary模式的Truncate表數據恢復,即丟失了SYSTEM表空間且丟失了SEGMENT HEADER所在的數據文件。
優先考慮使用Scan Tables From Segments模式,如果發現該模式下找不到所需的數據,再考慮使用Scan Tables From Extents模式。
解析字段類型
Scan Tables操作基于SEG.DAT中的SEGMENT HEADER信息來構建數據表信息。樹形圖上的每個節點表示一個數據表段,其名字為obj數據段上記錄的DATA OBJECT ID。選擇一個節點并觀察主界面右側邊欄,可以看到智能字段類型解析的結果。
由于丟失了SYSTEM表空間,在No-Dictionary模式下缺乏數據表的結構信息,包括字段名和字段類型。PRM采用先進的JAVA類型預判技術來解析字段類型,可以解析多達10種主流數據類型。解析準確度超過90%,可以自動解決大部分場景。右側邊欄顯示各字段的含義,包括字段號、取到的行數、最大長度、NULL的比例,以及將字段解析為字符串、數字、日期和時間戳的比例。
示例數據分析
根據智能字段類型解析的結果,可以解析10條數據并顯示解析結果。這些示例數據可以幫助用戶了解實際存放在數據段中的數據情況。如果數據段上的記錄條數不足10條,則會顯示所有記錄。
如果還有字段類型無法確定,PRM會嘗試使用各種字段類型來解析,并呈現給用戶,以便用戶自行判斷。目前PRM還不支持的類型包括XDB.XDB$RAW_LIST_T、XMLTYPE和用戶自定義類型等。
數據搭橋
PRM生成的UNLOAD語句僅作為系統內部使用和PRM開發團隊以及ParnassusData支持工程師使用。在Non-Dictionary模式下,可以采用常規和數據搭橋模式。區別在于非字典模式下數據搭橋時,用戶可以自行執行字段的類型。如果用戶知道表設計時的結構,可以自行選擇正確的Column Type類型,以便PRM將表數據順利搭橋到目標數據庫。