透過控制程式碼檔案恢復linux下誤刪除的資料檔案
資料庫在open的時候資料檔案被刪除(從系統級別刪除)
因為在linux系統中,之前開啟過該檔案的程式仍然持有相應的檔案控制程式碼,所指向的檔案仍然可以讀寫,
檔案描述符可以從/proc目錄中得到
如果關閉資料庫,則該控制程式碼會消失
[@more@]因為在linux系統中,之前開啟過該檔案的程式仍然持有相應的檔案控制程式碼,所指向的檔案仍然可以讀寫,
檔案描述符可以從/proc目錄中得到
如果關閉資料庫,則該控制程式碼會消失
透過簡單的實驗演示一下
SYS SQL> select status from v$instance;
STATUS
------------
OPEN
------------
OPEN
SYS SQL> select name from v$datafile;
NAME
-------------------------------------------------------
/opt/app/oracle/oradata/ora10g/system01.dbf
/opt/app/oracle/oradata/ora10g/undotbs01.dbf
/opt/app/oracle/oradata/ora10g/sysaux01.dbf
/opt/app/oracle/oradata/ora10g/users01.dbf
-------------------------------------------------------
/opt/app/oracle/oradata/ora10g/system01.dbf
/opt/app/oracle/oradata/ora10g/undotbs01.dbf
/opt/app/oracle/oradata/ora10g/sysaux01.dbf
/opt/app/oracle/oradata/ora10g/users01.dbf
刪除users表空間的資料檔案
SYS SQL> ! rm -rf /opt/app/oracle/oradata/ora10g/users01.dbf
在users表空間建表的時候,報錯
SYS SQL> create table t3 tablespace users as select * from scott.emp;
create table t3 tablespace users as select * from scott.emp *
ERROR at line 1:
ORA-01116: error in opening database file 4
ORA-01110: data file 4: '/opt/app/oracle/oradata/ora10g/users01.dbf'
ORA-27041: unable to open file
Linux Error: 2: No such file or directory
Additional information: 3
SYS SQL> select status from v$instance;
STATUS
------------
OPEN
------------
OPEN
檢視dbw0寫程式的程式號
[oracle@report bdump]$ ps -ef | grep dbw0 |grep -v grep
oracle 3393 1 0 17:32 ? 00:00:05 ora_dbw0_ora10g
proc目錄下檢視控制程式碼號,可以看到users表空間的資料檔案後面標示有deleted的字樣 控制程式碼檔名為21
[root@report ora10g]# cd /proc/3393/fd/
[root@report fd]# ll
lr-x------ 1 oracle dba 64 Dec 26 23:20 0 -> /dev/null
lr-x------ 1 oracle dba 64 Dec 26 23:20 1 -> /dev/null
lr-x------ 1 oracle dba 64 Dec 26 23:20 10 -> /dev/zero
lr-x------ 1 oracle dba 64 Dec 26 23:20 11 -> /dev/zero
lr-x------ 1 oracle dba 64 Dec 26 23:20 12 -> /opt/app/oracle/product/10.2.0/rdbms/mesg/oraus.msb
lrwx------ 1 oracle dba 64 Dec 26 23:20 13 -> /opt/app/oracle/product/10.2.0/dbs/hc_ora10g.dat
lrwx------ 1 oracle dba 64 Dec 26 23:20 14 -> /opt/app/oracle/product/10.2.0/dbs/lkORA10G
lrwx------ 1 oracle dba 64 Dec 26 23:20 15 -> /opt/app/oracle/oradata/ora10g/control01.ctl
lrwx------ 1 oracle dba 64 Dec 26 23:20 16 -> /opt/app/oracle/oradata/ora10g/control02.ctl
lrwx------ 1 oracle dba 64 Dec 26 23:20 17 -> /opt/app/oracle/oradata/ora10g/control03.ctl
lrwx------ 1 oracle dba 64 Dec 26 23:20 18 -> /opt/app/oracle/oradata/ora10g/system01.dbf
lrwx------ 1 oracle dba 64 Dec 26 23:20 19 -> /opt/app/oracle/oradata/ora10g/undotbs01.dbf
lr-x------ 1 oracle dba 64 Dec 26 23:20 2 -> /dev/null
lrwx------ 1 oracle dba 64 Dec 26 23:20 20 -> /opt/app/oracle/oradata/ora10g/sysaux01.dbf
lrwx------ 1 oracle dba 64 Dec 26 23:20 21 -> /opt/app/oracle/oradata/ora10g/users01.dbf (deleted)
lrwx------ 1 oracle dba 64 Dec 26 23:20 22 -> /opt/app/oracle/oradata/ora10g/temp01.dbf
lr-x------ 1 oracle dba 64 Dec 26 23:20 23 -> /opt/app/oracle/product/10.2.0/rdbms/mesg/oraus.msb
lr-x------ 1 oracle dba 64 Dec 26 23:20 3 -> /dev/null
lr-x------ 1 oracle dba 64 Dec 26 23:20 4 -> /dev/null
l-wx------ 1 oracle dba 64 Dec 26 23:20 5 -> /opt/app/oracle/admin/ora10g/udump/ora10g_ora_3384.trc
l-wx------ 1 oracle dba 64 Dec 26 23:20 6 -> /opt/app/oracle/admin/ora10g/bdump/alert_ora10g.log
l-wx------ 1 oracle dba 64 Dec 26 23:20 8 -> /opt/app/oracle/admin/ora10g/bdump/alert_ora10g.log
lrwx------ 1 oracle dba 64 Dec 26 23:20 9 -> /opt/app/oracle/product/10.2.0/dbs/hc_ora10g.dat
直接cp該控制程式碼檔名到資料檔案原位置
[root@report fd]# cp 21 /opt/app/oracle/oradata/ora10g/users01.dbf
SYS SQL> alter database datafile 4 offline;
Database altered.
SYS SQL> recover datafile 4;
Media recovery complete.
Media recovery complete.
SYS SQL> alter database datafile 4 online;
Database altered.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/7490392/viewspace-1059516/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Linux下誤刪資料檔案從檔案控制程式碼恢復資料檔案Linux
- 通過控制程式碼恢復Linux下誤刪除的資料庫資料檔案Linux資料庫
- 通過檔案控制程式碼恢復刪除的資料檔案
- linux下恢復誤刪除的資料檔案Linux
- 誤刪除資料檔案、控制檔案的非RMAN恢復方法
- linux下恢復誤刪除oracle的資料檔案LinuxOracle
- Oracle恢復誤刪除的資料檔案Oracle
- Oracle資料恢復 - Linux / Unix 誤刪除的檔案恢復(轉)Oracle資料恢復Linux
- 使用檔案描述符恢復誤刪除的資料檔案
- linux中誤刪除oracle資料檔案的恢復操作LinuxOracle
- 資料檔案誤刪--但有資料檔案的copy恢復
- linux下 恢復被rm意外刪除資料檔案Linux
- linux中誤刪除oracle資料檔案的恢復操作(轉)LinuxOracle
- linux系統下檔案誤刪除該如何恢復?Linux
- OS 刪除oracle資料檔案恢復過程Oracle
- lsof恢復oracle誤刪除檔案Oracle
- 歸檔模式下,線上刪除資料檔案的完全恢復模式
- 使用lsof恢復誤刪除的檔案
- Linux下使用lsof恢復刪除的檔案Linux
- 恢復刪除的檔案
- 刪除檔案的恢復
- RM 刪除資料檔案恢復操作
- 【伺服器資料恢復】Zfs檔案系統下誤刪除怎麼恢復資料伺服器資料恢復
- ZT:使用lsof恢復誤刪除的檔案
- 非歸檔模式下恢復利用offline drop命令誤刪除的資料檔案模式
- 恢復rm -f物理刪除資料檔案
- 恢復被rm意外刪除資料檔案
- 一次物理刪除資料檔案的恢復過程
- Git恢復刪除的檔案Git
- Linux下用rm刪除的檔案的恢復方法Linux
- lsof恢復誤刪的檔案
- Oracle 檔案意外刪除恢復(Linux)OracleLinux
- linux/uninx恢復刪除的檔案<轉>Linux
- solaris下使用lsof恢復刪除的檔案
- MySQL誤刪物理檔案的恢復(Linux)MySqlLinux
- 怎樣恢復回收站已刪除檔案,檔案刪除恢復教程
- 行動硬碟刪除的檔案能恢復嗎,怎樣恢復刪除的檔案硬碟
- 全備份情況下,刪除控制檔案及恢復