LINUX下誤刪除Oracle數據庫,數據恢復技術方案

前言

在LINUX下的Ext3/Ext4文件系統下,如果誤刪除了數據,數據恢復難度很大。如果說刪除的文件數量不大(一般在幾百個文件以內),還能夠通過.journal日誌文件對比殘留的inode信息進行恢復,恢復出來的數據目錄結構不一定能保留完整;如果刪除文件數量很大,數據恢復幾乎不能完整保留文件目錄結構。這是Ext3/Ext4文件系統的通病,不給誤刪除留後路!在數據恢復業案例中,有不少例子是LINUX下誤刪除了ORACLE數據庫文件,我今天來講講Linux下刪除Oracle數據庫的數據恢復技術方案。

數據丟失案例背景

計算機維護工程師停掉oracle服務,打算把oracle做一個冷備份,把庫文件備份到windows PC Server上,用CuteFTP客戶端下載。在下載過程中,發現下載速度特別慢,想刪除下載任務,結果誤操作,把要下載的oracle實例文件夾整個都刪除了, oracle庫文件、控制文件、日誌文件全部刪除了。

LINUX下EXT3文件系統恢復技術介紹

EXT3文件系統沒有預留反刪除的功能。

在EXT3文件系統中,每個文件都是通過Inode來描述其數據存放的具體位置,當刪除文件以後,Inode的數據指針部分被清零,文件目錄區沒有太多變化。文件的讀寫都是通過Inode來實現,當Inode數據指針被清零以後,即便文件內容還在,我們也沒有辦法把文件內容組合出來。

EXT3文件系統是一種帶日誌功能的文件系統,Inode的變化會在日誌文件.journal中有記錄,.journal文件比較小,一般是32MB。當EXT3文件系統中的metadata數據發生變化時,相應的metadata在.journal文件會有一份COPY。比如一個文件被刪除了,它的Inode信息會在.journal文件中先保存一份,然後把要刪除文件inode相關信息清零。這個.journal文件是循環使用的,當操作過多時,刪除的文件的inode日誌記錄會被新的數據替換,這就徹底喪失了根據inode找回數據的機會了。如果是大量文件的刪除,這個.journal文件會被反覆循環利用多次,只留給最後刪除的那些文件的恢復機會。

數據恢復技術

客戶要恢復的是oracle數據庫,oracle數據庫文件被刪除以後,只要是數據內容沒有被覆蓋,達思數據恢復技術可以把文件單獨提取出來。

經過深入分析,在.journal文件沒有找到刪除過的oracle數據文件,原因是用戶刪除數據以後,系統還在開機運行,同時嘗試啓動過oracle實例,oracle產生一些日誌文件,這些日誌文件數量比較多,而要恢復的刪除過的文件數量只有16個,在.journal文件中已經沒有了刪除文件的inode信息。

恢復的思路有兩條:

第一種:根據oracle數據文件內部結構,對全盤進行搜索,符合oracle數據頁面的數據都提取出來,然後按照oracle數據文件的ID號進行重新組合。

第二種:根據oracle數據文件分佈規律,精確定位oracle文件的數據指針地址,包括一級間接地址、二級間接地址和三級間接地址,重新構造出該文件的inode信息,然後把數據讀取出來。

通過這兩種恢復出來的數據效果都很好,最後oracle能正常啓動。工程師把數據全部備份出來,最後發現有兩個表數據少了一些記錄,經查明,原因就是刪除文件以後,一些日誌文件的寫入該分區,破壞了oracle數據文件的一些數據頁面,幸好這兩張表數據對用戶來說不是很重要。

數據安全提醒

在LINUX/UINX下誤刪除了文件,當發現數據丟失以後,最好不要進行任何操作,馬上關機,保留現場。如果條件不允許關機,就要想辦法把數據丟失的文件系統經過DD鏡像到另外的存儲空間上作爲最原始的備份。

本文首發於達思硬盤數據恢復公司,作者:達思總工覃廷良,轉載請註明出處http://www.bnuol.com

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章