記一次oracle數據文件被誤刪後恢復過程

故障現象:

用戶在導出數據庫的時候,把數據文件全部給誤刪了,數據庫崩潰,一個數據文件不剩,用戶當場急哭!

處理過程:

收到故障電話後,馬上讓用戶停止一切對該目錄的操作,等候救援來到!

來到現場後,登陸系統,發現分區目錄如下:

誤刪原因:

   用戶起先導出的數據是存放在/根目錄下,報錯exp-00002,根目錄空間被佔滿,於是用戶新建了/test目錄,再讓人

掛載了一個分區給/test目錄,(注意:這裏的分區:VGOraData-lvdata01,已經掛載給了三個目錄,這是極大的隱患)

這樣,同一個分區掛給了三個目錄,也就是說這三個目錄的內容是一樣的,其中/test/目錄是用戶爲了導數據存放的目錄,

在用戶導出數據過程中失敗的時候,想要刪除導出的文件,用戶以爲/test目錄和/oradata目錄裏的文件應該是不一樣的,

所以他在/test目錄直接執行了“  rm -fr *  ” 命令,三個目錄裏的文件同時全部被刪!

數據恢復過程:

一、umount "VGOraData-lvdata01" 這個分區掛載的所有目錄;

二、安裝extundelete工具:

工具包下載: https://pan.baidu.com/s/1gNlNUMJ-6ocYDauyKCbTXQ 提取碼: riwd

1、安裝依賴包

yum install -y e2fsprogs-*

2、解壓工具包

tar jxf extundelete-0.2.4.tar.bz2

3、指定安裝目錄、編譯、編譯安裝

cd extundelete-0.2.4

./configure

make

make install

三、掛載一個新的分區:

      掛載另一個空間足夠的分區到新的目錄上,如果有外置存儲並空間夠的話,可以從存儲新劃分一個lun過來,這樣速度會快點,

這裏因爲存儲空間不夠,所以用的是外接的1T移動硬盤,分區並格式化後,掛載到新的/dtata目錄下。

四、恢復命令:

extundelete /dev/mapper/VGOraData-lvdata01 --restore-all

注:要把數據恢復到哪個目錄下,需要進到該目錄裏,再執行以下恢復命令,這裏是恢復到/dtata裏面。

恢復整個分區的內容,如下圖:

漫長的等待過程...... (300G的數據用了一個晚上)

五、 恢復的時候,會在當前目錄(這裏是/dtata)創建一個目錄:RECOVERED_FILES,恢復的數據都在這個目錄裏面,

        恢復完成後,基本上該分區的數據都已恢復,恢復後的目錄和文件結構與原有的保持一致。

       對照控制文件裏的目錄,丟失了一個數據文件:sysaux01.dbf,還好,沒有業務數據在裏面。

六、把RECOVERED_FILES目錄的所有內容移動到上層/dtata目錄下,把移動硬盤的分區重新掛給/oradata和/oralog,

嘗試啓動數據庫,報錯如下:

找不到sysaux01.dbf,無法打開數據庫,只到mount狀態。

沒有備份,無法恢復!

七、在mount狀態,先offline sysaux01.dbf:

alter database datafile '/oradata/orcl/sysaux01.dbf' offline drop;

再打開數據庫,成功!

八、導出數據庫中所有表,搭建新的oracle數據庫服務器,把表導回去,結束!

 

 

 

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