-
1 # 跟我搞事情哦
-
2 # 架構師技術之棧
誤刪檔案,用軟體只能恢復一小部分,還有其他方法嗎,這是一個非常好的問題,在解決這個問題之前,先確定一下刪除的是什麼問題,如果是windows的系統檔案,用一些檔案恢復軟體就可以非常方便的找回,例如:Finaldata,超級硬碟資料恢復軟體,SoftPerfect File Recovery,Wise Data Recovery都是非常好用的軟體,如果是linux,aix等系統檔案被刪除,該怎麼恢復呢,下面就從一個oracle資料庫檔案被刪除,怎麼恢復來說明一下
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表空間中建立表,開始報錯。
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
3. 檢查dbwr的程序PID
$ ps -ef|grep dbw0|grep -v grep
oracle 2879 1 0 21:38 ? 00:00:00 ora_dbw0_orcl
4.找到2879對應的檔案控制代碼檔案目錄,就可以看到這個程序控制代碼還在,只要的oracle資料庫沒重啟,系統沒重啟,就會一直存在。
$ cd /proc/2879/fd
$ ls -l
total 0
lrwx------ 1 oracle dba 64 Dec 19 21:50 19 -> /app/oracle/oradata/ORCL/datafile/o1_mf_users_555wrj4o_.dbf (deleted)
5.直接cp該控制代碼檔名回原位置。
cp 19 /app/oracle/oradata/ORCL/datafile/
o1_mf_users_555wrj4o_.dbf
6. 進行資料檔案recover
SQL> alter database datafile 4 offline;
Database altered.
SQL> recover datafile 4;
Media recovery complete.
SQL> alter database datafile 4 online;
Database altered.
恢復的原理是,在Linux作業系統中,
無論如何,這個方法屬於特殊的資料庫恢復方法,對於重要的資料,還需要經常做備份,這樣才能在你需要的時候,能快速恢復你重要的資料。
回覆列表
誤刪檔案的區分:電腦刪除檔案CTR+ALT+DELETE 這種方法回收站是找不回來的,但是通過硬碟資料恢復工具是可以找回來的(有個前提,資料儲存單元硬體沒被重寫原資料沒被抹掉);電腦delete刪除,首先可以在回收站找回恢復檔案即可,如果回收站被清空了,那就需要用硬碟恢復工具進行恢復;再一種可能就是硬碟格式化了,需要恢復硬碟的資料就需要用到硬碟資料恢復工具,推薦一款超級硬碟恢復工具,恢復資料軟體,特別有效,但是任何軟體都不能保證百分之百恢復,資料單元被重寫就是無法恢復的。所以做好思想準備吧。