通過檔案控制程式碼恢復刪除的資料檔案

yhj20041128001發表於2013-07-19

通過檔案控制程式碼恢復資料檔案

 

1.刪除資料檔案

[hrmsoraclone@hrmodbt01 HRMCLONE]$ rm -f paapp.dbf

 

2.查詢dbwr程式pid

[hrmsoraclone@hrmodbt01 HRMCLONE]$ ps -ef|grep dbw|grep -v grep

506       3985     1  0 Jul17 ?        00:00:02 ora_dbw0_HRMCLONE

 

3.dbwr程式會開啟所有訪問資料檔案的控制程式碼。

 

[hrmsoraclone@hrmodbt01 HRMCLONE]$ cd /proc/3985/fd

[hrmsoraclone@hrmodbt01 fd]$ ls -l

total 0

lr-x------ 1 hrmsoraclone dba 64 Jul 19 14:55 0 -> /dev/null

lr-x------ 1 hrmsoraclone dba 64 Jul 19 14:55 1 -> /dev/null

lr-x------ 1 hrmsoraclone dba 64 Jul 19 14:55 10 -> /dev/zero

lrwx------ 1 hrmsoraclone dba 64 Jul 19 14:55 100 -> /uhrms/hrmclone/hrmclonedata/HRMCLONE/paapp.dbf (deleted)

lrwx------ 1 hrmsoraclone dba 64 Jul 19 14:55 101 -> /uhrms/hrmclone/hrmclonedata/HRMCLONE/palarge.dbf

lrwx------ 1 hrmsoraclone dba 64 Jul 19 14:55 102 -> /uhrms/hrmclone/hrmclonedata/HRMCLONE/pcapp.dbf

 

4.通過copy檔案控制程式碼方式恢復資料檔案到原位置

[hrmsoraclone@hrmodbt01 fd]$ cp /proc/3985/fd/100 /uhrms/hrmclone/hrmclonedata/HRMCLONE/paapp.dbf

 

5.檢視檔案的檔案號

sys@HRMCLONE(10.70.38.162)>  select file#, name from v$datafile where name like '%paapp%';

 

FILE# NAME

----- ------------------------------------------------------------

   83 /uhrms/hrmclone/hrmclonedata/HRMCLONE/paapp.dbf

 

6.資料檔案恢復

sys@HRMCLONE(10.70.38.162)> alter database datafile 83 offline;

 

Database altered.

 

Elapsed: 00:00:00.02

sys@HRMCLONE(10.70.38.162)> recover datafile 83;

Media recovery complete.

sys@HRMCLONE(10.70.38.162)> alter database datafile 83 online;

 

Database altered.

 

Elapsed: 00:00:00.01

7.測試是否可以正常訪問

create table test tablespace paapp as select * from test2;

select * from paapp;

 

8.資料檔案被某個程式使用著,那麼這個程式就會一直持有這個資料檔案的控制程式碼,所指向的資料檔案依然可以讀寫,可以從proc->pid->fd目錄中找到被刪除的資料檔案控制程式碼(deletedcopy到原位置來恢復資料檔案。

 

 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/23757700/viewspace-766707/,如需轉載,請註明出處,否則將追究法律責任。

相關文章