濮阳杆衣贸易有限公司

主頁 > 知識庫 > Linux(Unix)中誤刪除的文件恢復(fù)方法

Linux(Unix)中誤刪除的文件恢復(fù)方法

熱門標(biāo)簽:漳州外呼系統(tǒng)怎么樣 內(nèi)蒙古電信外呼系統(tǒng) 天津人工電銷機器人費用 哪個地圖標(biāo)注更清晰 曲阜地圖標(biāo)注app 開封400電話辦理價格 地圖標(biāo)注小區(qū)項目入駐 4s店如何在百度地圖標(biāo)注 凱立德劇院地圖標(biāo)注
在Linux下大致重新演示一下恢復(fù)的過程,恢復(fù)的步驟與數(shù)據(jù)庫版本沒有太大關(guān)系,與操作系統(tǒng)的不同會有所不同。

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

復(fù)制代碼
代碼如下:

SQL> select name from v$datafile;
NAME
--------------------------------------------------------------------------------
/app/oracle/oradata/ORCL/datafile/o1_mf_system_555wqbnk_.dbf
/app/oracle/oradata/ORCL/datafile/o1_mf_undotbs1_555wqxgl_.dbf
/app/oracle/oradata/ORCL/datafile/o1_mf_sysaux_555wr5p6_.dbf
/app/oracle/oradata/ORCL/datafile/o1_mf_users_555wrj4o_.dbf
SQL> host rm /app/oracle/oradata/ORCL/datafile/o1_mf_users_555wrj4o_.dbf

2. 嘗試在users表空間中創(chuàng)建表,開始報錯。

復(fù)制代碼
代碼如下:

SQL> create table t tablespace users as select * from dual;
create table t tablespace users as select * from dual
*
ERROR at line 1:
ORA-01116: error in opening database file 4
ORA-01110: data file 4:
'/app/oracle/oradata/ORCL/datafile/o1_mf_users_555wrj4o_.dbf'
ORA-27041: unable to open file
Linux Error: 2: No such file or directory
Additional information: 3

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

復(fù)制代碼
代碼如下:

Mon Dec 19 21:48:17 CST 2011
Errors in file /app/oracle/admin/orcl/bdump/orcl_m000_3897.trc:
ORA-01116: error in opening database file 4
ORA-01110: data file 4: '/app/oracle/oradata/ORCL/datafile/o1_mf_users_555wrj4o_.dbf'
ORA-27041: unable to open file
Linux Error: 2: No such file or directory
Additional information: 3

3. 檢查dbwr的進程PID

復(fù)制代碼
代碼如下:

$ ps -ef|grep dbw0|grep -v grep
oracle 2879 1 0 21:38 ? 00:00:00 ora_dbw0_orcl

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

復(fù)制代碼
代碼如下:

$ cd /proc/2879/fd
$ ls -l
total 0
lr-x------ 1 oracle dba 64 Dec 19 21:50 0 -> /dev/null
lr-x------ 1 oracle dba 64 Dec 19 21:50 1 -> /dev/null
lr-x------ 1 oracle dba 64 Dec 19 21:50 10 -> /dev/zero
lr-x------ 1 oracle dba 64 Dec 19 21:50 11 -> /dev/zero
lr-x------ 1 oracle dba 64 Dec 19 21:50 12 -> /app/oracle/product/10.2.0/db_1/rdbms/mesg/oraus.msb
lrwx------ 1 oracle dba 64 Dec 19 21:50 13 -> /app/oracle/product/10.2.0/db_1/dbs/hc_orcl.dat
lrwx------ 1 oracle dba 64 Dec 19 21:50 14 -> /app/oracle/product/10.2.0/db_1/dbs/lkORCL
lrwx------ 1 oracle dba 64 Dec 19 21:50 15 -> /app/oracle/oradata/ORCL/controlfile/o1_mf_555wq3ng_.ctl
lrwx------ 1 oracle dba 64 Dec 19 21:50 16 -> /app/oracle/oradata/ORCL/datafile/o1_mf_system_555wqbnk_.dbf
lrwx------ 1 oracle dba 64 Dec 19 21:50 17 -> /app/oracle/oradata/ORCL/datafile/o1_mf_undotbs1_555wqxgl_.dbf
lrwx------ 1 oracle dba 64 Dec 19 21:50 18 -> /app/oracle/oradata/ORCL/datafile/o1_mf_sysaux_555wr5p6_.dbf
lrwx------ 1 oracle dba 64 Dec 19 21:50 19 -> /app/oracle/oradata/ORCL/datafile/o1_mf_users_555wrj4o_.dbf (deleted)
lr-x------ 1 oracle dba 64 Dec 19 21:50 2 -> /dev/null
lrwx------ 1 oracle dba 64 Dec 19 21:50 20 -> /app/oracle/oradata/ORCL/datafile/o1_mf_temp_555wrbnz_.tmp
lr-x------ 1 oracle dba 64 Dec 19 21:50 21 -> /app/oracle/product/10.2.0/db_1/rdbms/mesg/oraus.msb
lr-x------ 1 oracle dba 64 Dec 19 21:50 3 -> /dev/null
lr-x------ 1 oracle dba 64 Dec 19 21:50 4 -> /dev/null
l-wx------ 1 oracle dba 64 Dec 19 21:50 5 -> /app/oracle/admin/orcl/udump/orcl_ora_2871.trc
l-wx------ 1 oracle dba 64 Dec 19 21:50 6 -> /app/oracle/admin/orcl/bdump/alert_orcl.log
lrwx------ 1 oracle dba 64 Dec 19 21:50 7 -> /app/oracle/product/10.2.0/db_1/dbs/lkinstorcl (deleted)
l-wx------ 1 oracle dba 64 Dec 19 21:50 8 -> /app/oracle/admin/orcl/bdump/alert_orcl.log
lrwx------ 1 oracle dba 64 Dec 19 21:50 9 -> /app/oracle/product/10.2.0/db_1/dbs/hc_orcl.dat

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

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

復(fù)制代碼
代碼如下:

cp 19 /app/oracle/oradata/ORCL/datafile/o1_mf_users_555wrj4o_.dbf

6. 進行數(shù)據(jù)文件recover

復(fù)制代碼
代碼如下:

SQL> alter database datafile 4 offline;
Database altered.
SQL> recover datafile 4;
Media recovery complete.
SQL> alter database datafile 4 online;
Database altered.

完成數(shù)據(jù)文件恢復(fù)。

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

當(dāng)然,客戶的操作系統(tǒng)是Solaris,并且客戶刪除的文件還包括current online redo log,因此還有其它更復(fù)雜的操作,不在這里描述。

標(biāo)簽:南陽 黔南 莆田 開封 武漢 南京 陽泉 綿陽

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Linux(Unix)中誤刪除的文件恢復(fù)方法》,本文關(guān)鍵詞  Linux,Unix,中誤,刪除,的,文件,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Linux(Unix)中誤刪除的文件恢復(fù)方法》相關(guān)的同類信息!
  • 本頁收集關(guān)于Linux(Unix)中誤刪除的文件恢復(fù)方法的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    襄垣县| 南京市| 南汇区| 萍乡市| 定结县| 宁强县| 西安市| 开封县| 泸西县| 诸暨市| 霍邱县| 夹江县| 台北市| 常德市| 六安市| 江西省| 栾城县| 湘潭县| 安龙县| 利辛县| 公主岭市| 罗定市| 山阴县| 渭南市| 丰台区| 望江县| 普安县| 青岛市| 庐江县| 昆山市| 达拉特旗| 闽侯县| 恩施市| 象州县| 兖州市| 澄城县| 乡宁县| 肃北| 涞水县| 扎囊县| 会理县|