oracle数据文件误删除以后的处理办法

来源:互联网 发布:淘宝网页制作教程 编辑:程序博客网 时间:2024/05/22 06:42
00:13:17 kiwi@prod> select * from cat;TABLE_NAME TABLE_TYPE------------------------------ -----------TEST TABLE[root@kiwi prod]# ls control01.ctl control02.ctl example01.dbf kiwi01.dbf redo01.log redo02.log redo03.log sysaux01.dbf system01.dbf temp01.dbf undotbs01.dbf users01.dbf[root@kiwi prod]# rm -rf kiwi01.dbf [root@kiwi prod]# ls control01.ctl control02.ctl example01.dbf redo01.log redo02.log redo03.log sysaux01.dbf system01.dbf temp01.dbf undotbs01.dbf  users01.dbf 00:13:45 kiwi@prod> drop table test purge; drop table test purge * ERROR at line 1: ORA-01116: error in opening database file 6 ORA-01110: data file 6: '/u02/oradata/prod/kiwi01.dbf' ORA-27041: unable to open file Linux-x86_64 Error: 2: No such file or directory Additional information: 3[00:15:45 root()@kiwi fd]# lltotal 0lr-x------ 1 oracle oinstall 64 Dec 26 00:15 0 -> /dev/nulll-wx------ 1 oracle oinstall 64 Dec 26 00:15 1 -> /dev/nulllr-x------ 1 oracle oinstall 64 Dec 26 00:15 10 -> /dev/zerolr-x------ 1 oracle oinstall 64 Dec 26 00:15 11 -> /dev/zerolrwx------ 1 oracle oinstall 64 Dec 26 00:15 12 -> /u01/app/oracle/product/11.2.0/db/dbs/hc_prod.datlr-x------ 1 oracle oinstall 64 Dec 26 00:15 13 -> /u01/app/oracle/product/11.2.0/db/rdbms/mesg/oraus.msblr-x------ 1 oracle oinstall 64 Dec 26 00:15 14 -> /proc/7401/fdlr-x------ 1 oracle oinstall 64 Dec 26 00:15 15 -> /dev/zerolrwx------ 1 oracle oinstall 64 Dec 26 00:15 16 -> /u01/app/oracle/product/11.2.0/db/dbs/hc_prod.datlrwx------ 1 oracle oinstall 64 Dec 26 00:15 17 -> /u01/app/oracle/product/11.2.0/db/dbs/lkPRODlr-x------ 1 oracle oinstall 64 Dec 26 00:15 18 -> /u01/app/oracle/product/11.2.0/db/rdbms/mesg/oraus.msbl-wx------ 1 oracle oinstall 64 Dec 26 00:15 2 -> /dev/nulllrwx------ 1 oracle oinstall 64 Dec 26 00:15 256 -> /u02/oradata/prod/control01.ctllrwx------ 1 oracle oinstall 64 Dec 26 00:15 257 -> /u02/oradata/prod/control02.ctllrwx------ 1 oracle oinstall 64 Dec 26 00:15 258 -> /u02/oradata/prod/system01.dbflrwx------ 1 oracle oinstall 64 Dec 26 00:15 259 -> /u02/oradata/prod/sysaux01.dbflrwx------ 1 oracle oinstall 64 Dec 26 00:15 260 -> /u02/oradata/prod/undotbs01.dbflrwx------ 1 oracle oinstall 64 Dec 26 00:15 261 -> /u02/oradata/prod/users01.dbflrwx------ 1 oracle oinstall 64 Dec 26 00:15 262 -> /u02/oradata/prod/example01.dbflrwx------ 1 oracle oinstall 64 Dec 26 00:15 263 -> /u02/oradata/prod/kiwi01.dbf (deleted)lrwx------ 1 oracle oinstall 64 Dec 26 00:15 264 -> /u02/oradata/prod/temp01.dbflr-x------ 1 oracle oinstall 64 Dec 26 00:15 3 -> /dev/nulllr-x------ 1 oracle oinstall 64 Dec 26 00:15 4 -> /dev/nulllr-x------ 1 oracle oinstall 64 Dec 26 00:15 5 -> /dev/nulllr-x------ 1 oracle oinstall 64 Dec 26 00:15 6 -> /dev/nulllrwx------ 1 oracle oinstall 64 Dec 26 00:15 7 -> /u01/app/oracle/product/11.2.0/db/dbs/hc_prod.datlr-x------ 1 oracle oinstall 64 Dec 26 00:15 8 -> /dev/nulllr-x------ 1 oracle oinstall 64 Dec 26 00:15 9 -> /dev/null00:14:54 kiwi@prod> select checkpoint_change# from v$datafile_header; CHECKPOINT_CHANGE# ------------------ 1088766 1088766 1088766 1088766 1088766 1088766 6 rows selected. Elapsed: 00:00:00.01 00:17:17 kiwi@prod> select checkpoint_change# from v$datafile; CHECKPOINT_CHANGE# ------------------ 1088766 1088766 1088766 1088766 1088766 1088766 6 rows selected.23:49:28 kiwi@prod> conn / as sysdba Connected. 23:49:42 sys@prod> 23:49:42 sys@prod> alter database datafile 6 offline; Database altered. Elapsed: 00:00:00.10 23:49:51 sys@prod> recover datafile 6; Media recovery complete. 23:49:57 sys@prod> alter database datafile 6 online; 

至此,完成误删除无备份的恢复

这个是利用操作系统文件描述符的方法来进行数据文件的恢复
在操作系统中,内核利用文件描述符在访问文件。在linux系统中,误删除文件以后,虽然该数据文件已经从操作系统中删除了,但是其文件句柄仍有数据库打开并持有,所以才数据库层面并不会释放其链表信息。因而也就能够从进程的地址信息中,通过复制将其直接恢复:
但我们要注意:
数据的关闭offline都会使其文件句柄被释放 ,文件就很难被找回了

0 0
原创粉丝点击