使用Dbseeker找回被刪除的Oracle數(shù)據(jù)
Dbseeker for Oracle Database是一款用Java語言開發(fā)的Oracle數(shù)據(jù)庫恢復(fù)軟件。它能夠繞過Oracle讀數(shù)據(jù)引擎,直接掃描數(shù)據(jù)文件的數(shù)據(jù)塊,分析數(shù)據(jù)塊格式,并讀取數(shù)據(jù)庫中
Dbseeker for Oracle Database是一款用Java語言開發(fā)的Oracle數(shù)據(jù)庫恢復(fù)軟件。它能夠繞過Oracle讀數(shù)據(jù)引擎,直接掃描數(shù)據(jù)文件的數(shù)據(jù)塊,分析數(shù)據(jù)塊格式,并讀取數(shù)據(jù)庫中的表記錄。因此,在由于各種原因引起的數(shù)據(jù)庫不能打開或者數(shù)據(jù)庫中的表被DROP、TRUNCATE、DELETE后,并且沒有備份的情況下,使用Dbseeker能夠及時找回數(shù)據(jù)表記錄。
如何找回被刪除的數(shù)據(jù)
當(dāng)相關(guān)人員由于一些人為錯誤,不慎DROP、TRUNCATE、DELETE了表數(shù)據(jù)時,首先要保持冷靜。在大部分的情況下,數(shù)據(jù)還在數(shù)據(jù)文件里,Oracle database只是做了一些刪除標(biāo)記或者清除了表頭的一些信息。為了保證數(shù)據(jù)不會被覆蓋,立即Offline表所屬的表空間,或關(guān)閉相關(guān)的應(yīng)用程序。
如果數(shù)據(jù)沒有被覆蓋,使用Dbseeker找回數(shù)據(jù)的成功率高達99.9%,但是如果數(shù)據(jù)被覆蓋,又沒有備份的情況下,就無法恢復(fù)數(shù)據(jù)了。
實戰(zhàn)場景模擬
在模擬數(shù)據(jù)字典完整的情況下,表記錄被刪除后,可以通過Dbseeker找回被刪除的表記錄寫入數(shù)據(jù)庫。具體步驟如下:
1. 首先新建表MYDELETEDTABLE,并生成測試記錄。
2. 為了校驗Dbseeker找回的數(shù)據(jù)的正確性,復(fù)制MYDELETEDTABLE到MYDELETEDTABLE2。
3. 刪除表MYDELETEDTABLE的全部記錄。
4. 使用Dbseeker找回數(shù)據(jù),并生成SQL*loader文件。
5. 導(dǎo)入SQL*loader文件到數(shù)據(jù)庫后,與MYDELETEDTABLE2表進行校驗。
6. 使用Dbseeker找回數(shù)據(jù),直接導(dǎo)入目標(biāo)數(shù)據(jù)庫后,與MYDELETEDTABLE2表進行校驗。
使用Dbseeker找回數(shù)據(jù)的步驟
1. 啟動Dbseeker恢復(fù)向?qū)Ы缑妫c擊"Next"按鈕。
2. 如果數(shù)據(jù)文件為File System格式,選擇"File System",點擊"Next"按鈕。如果為ASM格式,選擇"Automatic Storage Management(ASM)"。在這里我們選擇"File System"。
3. 選擇"Yes, The Oracle data dictionary in the system tablespace is intact.",點擊"Next"按鈕。
4. 點擊"Choose Files"按鈕,選擇數(shù)據(jù)文件。
5. 填入數(shù)據(jù)文件的OFFSET信息(單位Byte),點擊"Start"按鈕。Windows和LINUX環(huán)境下的數(shù)據(jù)文件不用考慮OFFSET,默認(rèn)設(shè)置為0。
6. Dbseeker初始化后,開始掃描關(guān)鍵字典表的信息。
7. 掃描關(guān)鍵字典表完成后,顯示Dbseeker的主界面。主界面顯示數(shù)據(jù)庫的DBID、DBNAME、數(shù)據(jù)庫字符集、數(shù)據(jù)庫國家字符集以及被選擇的數(shù)據(jù)文件的路徑、BLOCK SIZE和OFFSET。
8. 找到需要恢復(fù)的表,點擊右鍵,點擊"Desc Table"查看表的字段信息。確認(rèn)列表中是否存在Dbseeker不支持的字段類型(Unknown)。如果有Unknown字樣的字段類型,恢復(fù)數(shù)據(jù)時可能會發(fā)生問題。
9. 找到需要恢復(fù)的表,點擊右鍵,點擊"Seek Table"。
10. 點擊"Deleted Rows"標(biāo)簽,列出前200條被刪除取樣的記錄信息。
11. 數(shù)據(jù)恢復(fù)方法1:使用SQL*loader加載數(shù)據(jù)。點擊"Export to SQL*loader files"按鈕,生成SQL*loader文件。導(dǎo)出數(shù)據(jù)記錄成功后,將目錄拷貝到目標(biāo)服務(wù)器端,通過ORACLE的數(shù)據(jù)加載工具SQL*loader加載到目標(biāo)數(shù)據(jù)庫原表MYDELETEDTABLE,并校驗數(shù)據(jù)的正確性。
12. 數(shù)據(jù)恢復(fù)方法2:通過Dbseeker直接導(dǎo)入目標(biāo)數(shù)據(jù)庫。點擊"Export to target database"按鈕,填寫導(dǎo)入目標(biāo)數(shù)據(jù)庫連接信息,測試數(shù)據(jù)庫連接信息。如果能正常連接到導(dǎo)入目標(biāo)數(shù)據(jù)庫,點擊"Connect! Export"按鈕,直接把Dbseeker找到的被刪除表記錄信息通過JDBC插入目標(biāo)數(shù)據(jù)庫用戶dbseeker下的表MYDELETEDTABLE。數(shù)據(jù)導(dǎo)入到目標(biāo)數(shù)據(jù)庫成功后,進行數(shù)據(jù)校驗。
以上就是使用Dbseeker找回被刪除的Oracle數(shù)據(jù)的步驟和方法。使用Dbseeker能夠快速恢復(fù)被刪除的表記錄,提高數(shù)據(jù)恢復(fù)的成功率和效率。