誤刪文件,用軟件只能恢復一小部分,還有其他方法嗎,這是一個非常好的問題,在解決這個問題之前,先確定一下刪除的是什么問題,如果是windows的系統(tǒng)文件,用一些文件恢復軟件就可以非常方便的找回,
SQL>selectnamefromv$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>hostrm/app/oracle/oradata/ORCL/datafile/
o1_mf_users_555wrj4o_.dbf
SQL>createtablettablespaceusersasselect*fromdual;
createtablettablespaceusersasselect*fromdual
ERRORatline1:
ORA-01116:errorinopeningdatabasefile4
ORA-01110:datafile4:
'/app/oracle/oradata/ORCL/datafile/o1_mf_users_555wrj4o_.dbf'
ORA-27041:unabletoopenfile
LinuxError:2:Nosuchfileordirectory
Additionalinformation:3
$ps-ef|grepdbw0|grep-vgrep
oracle28791021:38?00:00:00ora_dbw0_orcl
$cd/proc/2879/fd
$ls-l
total0
lrwx------1oracledba64Dec1921:5019->
cp19/app/oracle/oradata/ORCL/datafile/
o1_mf_users_555wrj4o_.dbf
SQL>alterdatabasedatafile4offline;
Databasealtered.
SQL>recoverdatafile4;
Mediarecoverycomplete.
SQL>alterdatabasedatafile4online;
Databasealtered.
恢復的原理是,在Linux操作系統(tǒng)中,
如果文件從操作系統(tǒng)級別被rm掉,之前打開該文件的進程仍然持有相應(yīng)的文件句柄,所指向的文件仍然可以讀寫,并且該文件的文件描述符可以從/proc目錄中獲得。但是要注意的是,此時如果關(guān)閉數(shù)據(jù)庫,則此句柄會消失,那么除了掃描磁盤進行文件恢復之外就沒有其它方法了,因此在數(shù)據(jù)庫出現(xiàn)問題的時候,如果不確認情況的復雜程度,千萬不要隨便關(guān)閉數(shù)據(jù)庫。重啟數(shù)據(jù)庫往往是沒有意義的,甚至是致命的。