使用檔案描述符恢復誤刪除的資料檔案
OS:Oracle Linux 5u8 x64
DB:Oracle 11.2.0.4
在Oracle執行時,如果誤刪除了資料檔案,可以通過如下方式恢復。前提是不能關閉Oracle程式。因為檔案在用命令刪除時,並未立刻在磁碟上被刪除,其控制程式碼扔被程式訪問,因此一旦程式終止,將無法找回檔案。
另有一點注意,對於使用者表空間(如USERS),可用如下方式恢復。但如果是SYSTEM表空間則不可以,因為刪除SYSTEM表空間後,已無法使用sqlplus登入。
下面開始實驗。
資料庫已開啟,其下有資料檔案
刪除USERS表空間資料檔案
此時,可能仍然能查詢該表空間內的資料,但應無法執行DML語句。
下面開始嘗試恢復。
1. 確認PID
2. 確認FD
3. 複製相關檔案到新路徑
注意:cp後user01.dbf有可能是目錄,真正的檔案在改目錄下。移動重新命名即可。
4. 將問題資料檔案離線、重新命名、恢復、線上;
注意:在offline期間可能Oracle程式被自動強制關閉,此時需重新將Oracle啟動到mount狀態。
完成!
DB:Oracle 11.2.0.4
在Oracle執行時,如果誤刪除了資料檔案,可以通過如下方式恢復。前提是不能關閉Oracle程式。因為檔案在用命令刪除時,並未立刻在磁碟上被刪除,其控制程式碼扔被程式訪問,因此一旦程式終止,將無法找回檔案。
另有一點注意,對於使用者表空間(如USERS),可用如下方式恢復。但如果是SYSTEM表空間則不可以,因為刪除SYSTEM表空間後,已無法使用sqlplus登入。
下面開始實驗。
資料庫已開啟,其下有資料檔案
點選(此處)摺疊或開啟
-
$ cd /oradata/APR/datafile/
-
[oracle@apr datafile]$ ll
-
total 4690612
-
-rw-r----- 1 oracle oinstall 597696512 Jun 6 23:04 o1_mf_sysaux_chzbv7op_.dbf
-
-rw-r----- 1 oracle oinstall 786440192 Jun 6 23:04 o1_mf_system_chzbv7mg_.dbf
-
-rw-r----- 1 oracle oinstall 30416896 Jun 6 23:06 o1_mf_temp_chzbynjn_.tmp
-
-rw-r----- 1 oracle oinstall 1073750016 Jun 6 23:06 o1_mf_temp_chzg2zy8_.tmp
-
-rw-r----- 1 oracle oinstall 94380032 Jun 6 23:04 o1_mf_undotbs1_chzbv7pc_.dbf
- -rw-r----- 1 oracle oinstall 2629312512 Jun 6 23:04 o1_mf_users_chzbv7qk_.dbf
點選(此處)摺疊或開啟
-
$ ll *users*
-
-rw-r----- 1 oracle oinstall 2629312512 Jun 6 23:04 o1_mf_users_chzbv7qk_.dbf
- [oracle@apr datafile]$ rm -f *users*
點選(此處)摺疊或開啟
-
SQL> select owner,table_name,tablespace_name from dba_tables where owner='SH' and TABLE_NAME='SALES';
-
-
OWNER TABLE_NAME
-
------------------------------ ------------------------------
-
TABLESPACE_NAME
-
------------------------------
-
SH SALES
-
USERS
-
-
SQL> connect sh/sh
-
Connected.
-
SQL> create table tt (x int);
-
-
Table created.
-
-
SQL> insert into tt values (1);
-
insert into tt values (1)
-
*
-
ERROR at line 1:
-
ORA-01116: error in opening database file 4
-
ORA-01110: data file 4: '/oradata/APR/datafile/o1_mf_users_chzbv7qk_.dbf'
-
ORA-27041: unable to open file
-
Linux-x86_64 Error: 2: No such file or directory
- Additional information: 3
1. 確認PID
點選(此處)摺疊或開啟
-
$ ps -ef | grep dbw
-
oracle 4883 1 0 23:04 ? 00:00:00 ora_dbw0_apr
- oracle 5067 5034 0 23:07 pts/4 00:00:00 grep dbw
點選(此處)摺疊或開啟
-
# lsof -p 4883
-
……
-
oracle 4883 oracle 258uW REG 253,2 786440192 2867203 /oradata/APR/datafile/o1_mf_system_chzbv7mg_.dbf
-
oracle 4883 oracle 259u REG 253,2 608182272 2867204 /oradata/APR/datafile/o1_mf_sysaux_chzbv7op_.dbf
-
oracle 4883 oracle 260uW REG 253,2 94380032 2867205 /oradata/APR/datafile/o1_mf_undotbs1_chzbv7pc_.dbf
-
oracle 4883 oracle 261uW REG 253,2 2629312512 2867206 /oradata/APR/datafile/o1_mf_users_chzbv7qk_.dbf (deleted)
-
oracle 4883 oracle 262uW REG 253,2 30416896 2867213 /oradata/APR/datafile/o1_mf_temp_chzbynjn_.tmp
-
oracle 4883 oracle 263uW REG 253,2 1073750016 2867214 /oradata/APR/datafile/o1_mf_temp_chzg2zy8_.tmp
- [root@apr ~]#
注意:cp後user01.dbf有可能是目錄,真正的檔案在改目錄下。移動重新命名即可。
點選(此處)摺疊或開啟
-
$ mkdir /oradata/neworadata
- [oracle@apr ~]$ cp /proc/4883/fd/261 /oradata/neworadata/users01.dbf
注意:在offline期間可能Oracle程式被自動強制關閉,此時需重新將Oracle啟動到mount狀態。
點選(此處)摺疊或開啟
-
alter database datafile '/oradata/APR/datafile/o1_mf_users_chzbv7qk_.dbf' offline;
-
-
alter database rename file '/oradata/APR/datafile/o1_mf_users_chzbv7qk_.dbf' to '/oradata/neworadata/users01.dbf';
-
-
SQL> recover datafile '/oradata/neworadata/users01.dbf';
-
Media recovery complete.
-
SQL> alter database datafile '/oradata/neworadata/users01.dbf' online;
-
-
Database altered.
-
-
SQL> alter database open;
-
- Database altered.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22621861/viewspace-2116545/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle恢復誤刪除的資料檔案Oracle
- 使用lsof恢復誤刪除的檔案
- 誤刪除資料檔案、控制檔案的非RMAN恢復方法
- ZT:使用lsof恢復誤刪除的檔案
- linux下恢復誤刪除的資料檔案Linux
- 資料檔案誤刪--但有資料檔案的copy恢復
- lsof恢復oracle誤刪除檔案Oracle
- Oracle資料恢復 - Linux / Unix 誤刪除的檔案恢復(轉)Oracle資料恢復Linux
- linux下恢復誤刪除oracle的資料檔案LinuxOracle
- 恢復刪除的檔案
- 刪除檔案的恢復
- RM 刪除資料檔案恢復操作
- linux中誤刪除oracle資料檔案的恢復操作LinuxOracle
- 恢復rm -f物理刪除資料檔案
- 恢復被rm意外刪除資料檔案
- Git恢復刪除的檔案Git
- lsof恢復誤刪的檔案
- 透過控制程式碼檔案恢復linux下誤刪除的資料檔案Linux
- linux中誤刪除oracle資料檔案的恢復操作(轉)LinuxOracle
- 怎樣恢復回收站已刪除檔案,檔案刪除恢復教程
- 行動硬碟刪除的檔案能恢復嗎,怎樣恢復刪除的檔案硬碟
- 通過檔案控制程式碼恢復刪除的資料檔案
- 歸檔模式下,線上刪除資料檔案的完全恢復模式
- 如何使用 testdisk 恢復已刪除的檔案
- solaris下使用lsof恢復刪除的檔案
- Linux下誤刪資料檔案從檔案控制程式碼恢復資料檔案Linux
- 行動硬碟刪除的檔案能恢復嗎,怎麼恢復硬碟刪除的檔案硬碟
- 【北亞資料恢復】zfs檔案系統的伺服器誤刪除的資料恢復資料恢復伺服器
- OS 刪除oracle資料檔案恢復過程Oracle
- Oracle11g資料庫引數檔案誤刪除恢復Oracle資料庫
- eclipse 恢復誤刪檔案Eclipse
- 【伺服器資料恢復】Zfs檔案系統下誤刪除怎麼恢復資料伺服器資料恢復
- 無備份恢復(歸檔模式)已刪除資料檔案模式
- Linux下使用lsof恢復刪除的檔案Linux
- Linux下面誤刪除檔案使用extundelete工具恢復介紹Linuxdelete
- 伺服器儲存檔案誤刪資料恢復伺服器資料恢復
- 非歸檔模式下恢復利用offline drop命令誤刪除的資料檔案模式
- Oracle資料庫意外刪除資料檔案的恢復(轉載)Oracle資料庫