omniture

一区二区三区乱码国产在线_无码精品一区二区三区免费_日韩国产欧美一区二区三区_日韩欧美中文字幕一字不卡

數據恢復:如何恢復Linux中意外刪除的文件

2016-03-07 14:34

                          云和恩墨副總經理,Oracle ACE總監,ACOUG 聯合創始人張樂奕

今天有客戶的數據庫意外被刪除了整個目錄中的數據文件,操作系統級別的刪除,然而幸運的是這個數據庫沒有崩潰,仍然處于 open 狀態的時候,客戶就發現了問題,求助到我們,最終完整地恢復了所有數據文件。

在 Linux 下大致重新演示一下恢復的過程,恢復的步驟與數據庫版本沒有太大關系,與操作系統的不同會有所不同。

1. 在數據庫 open 的時候,直接刪除 users 表空間中的數據文件。

2. 嘗試在 users 表空間中創建表,開始報錯。

在告警日志中,同樣也可以看到類似信息。

3. 檢查 dbwr 的進程 PID

4. dbwr 會打開所有數據文件的句柄。在 proc 目錄中可以查到,目錄名是進程 PID,fd 表示文件描述符。

注意其中“/app/oracle/oradata/ORCL/datafile/o1_mf_users_555wrj4o_.dbf (deleted)”字樣,表示該文件已經被刪除,如果是 Solaris 操作系統,ls 命令不會有如此清晰的顯示,為了在 Solaris 系統中確認哪個句柄對應哪個文件,則需要使用 lsof 程序。

5. 直接 cp 該句柄文件名回原位置。

6. 進行數據文件 recover

完成數據文件恢復。

恢復的原理是,在 Linux 操作系統中,如果文件從操作系統級別被rm掉,之前打開該文件的進程仍然持有相應的文件句柄,所指向的文件仍然可以讀寫,并且該文件的文件描述符可以從 /proc 目錄中獲得。但是要注意的是,此時如果關閉數據庫,則此句柄會消失,那么除了掃描磁盤進行文件恢復之外就沒有其它方法了,因此在數據庫出現問題的時候,如果不確認情況的復雜程度,千萬不要隨便關閉數據庫。重啟數據庫往往是沒有意義的,甚至是致命的。

當然,客戶的操作系統是Solaris,并且客戶刪除的文件還包括 current online redo log,因此還有其它更復雜的操作,不在這里描述

消息來源:比特網
主站蜘蛛池模板: 克拉玛依市| 安远县| 南郑县| 东山县| 祁阳县| 西青区| 钦州市| 包头市| 山西省| 留坝县| 图木舒克市| 武清区| 巴东县| 建阳市| 徐闻县| 麻阳| 达日县| 仙居县| 射阳县| 隆安县| 新余市| 海安县| 长兴县| 伊宁市| 松溪县| 永安市| 察雅县| 陆川县| 东丰县| 新源县| 石狮市| 马公市| 古田县| 斗六市| 喀什市| 德惠市| 信宜市| 清徐县| 漳州市| 全椒县| 晋中市|