使用檔案描述符恢復誤刪除的資料檔案
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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- linux下恢復誤刪除oracle的資料檔案LinuxOracle
- Git恢復刪除的檔案Git
- eclipse 恢復誤刪檔案Eclipse
- 行動硬碟刪除的檔案能恢復嗎,怎麼恢復硬碟刪除的檔案硬碟
- 如何使用 testdisk 恢復已刪除的檔案
- Linux下面誤刪除檔案使用extundelete工具恢復介紹Linuxdelete
- 【北亞資料恢復】zfs檔案系統的伺服器誤刪除的資料恢復資料恢復伺服器
- 【伺服器資料恢復】Zfs檔案系統下誤刪除怎麼恢復資料伺服器資料恢復
- 伺服器儲存檔案誤刪資料恢復伺服器資料恢復
- linux系統下檔案誤刪除該如何恢復?Linux
- sd卡刪除的檔案如何恢復SD卡
- Shift + Delete刪除的檔案如何恢復?delete
- git恢復誤刪未提交的檔案Git
- 被誤刪的檔案快速恢復方法
- 如何有效恢復誤刪的HDFS檔案
- Oracle 檔案意外刪除恢復(Linux)OracleLinux
- 電腦誤刪除檔案怎麼恢復檔案,不小心刪除了電腦的檔案怎麼辦
- 360粉碎檔案可以恢復嗎,如何恢復360強力刪除的檔案
- 電腦裡刪除的檔案怎麼恢復,資料恢復方法大全資料恢復
- 恢復ext4檔案系統被誤刪的檔案
- 【虛擬機器資料恢復】誤刪除VMware虛擬機器vmdk檔案的資料恢復案例虛擬機資料恢復
- MySQL資料災難挽救之ibdata檔案誤刪恢復MySql
- 電腦檔案誤刪除了怎麼恢復找回?誤刪電腦資料恢復方法教程資料恢復
- 電腦誤刪檔案怎麼恢復?
- Linux 恢復rm -rf命令所刪除的達夢資料檔案Linux
- 虛擬機器vmdk檔案刪除後如何恢復資料虛擬機
- NetApp FAS2240-4儲存刪除檔案資料恢復APP資料恢復
- sd卡中的資料夾刪除了怎麼恢復,SD卡刪除的檔案如何恢復SD卡
- 【伺服器資料恢復】linux ext3檔案系統下誤刪除mysql資料庫的資料恢復案例伺服器資料恢復LinuxMySql資料庫
- 隨身碟被刪除的檔案如何恢復?
- 恢復EXT3下被刪除的檔案
- 回收站刪除的檔案怎麼恢復?
- 被360防毒刪除的檔案怎麼恢復防毒
- 如何恢復誤刪的檔案?2021最新教程
- 資料檔案誤刪除(DM_單機)
- win10中mdf檔案被誤刪如何恢復_win10系統mdf檔案被誤刪的恢復方法Win10
- rm -rf 刪除檔案還能恢復嗎?
- win10誤刪檔案怎麼恢復Win10
- 【北亞資料恢復】分散式儲存hbase和hive資料庫底層檔案被誤刪除的資料恢復案例資料恢復分散式Hive資料庫