Oracle恢复误删除的数据文件

实验环境:
    CentOS 6.4
    Oracle 11.2.0.3.0

1.模拟误删除了Oracle的数据文件
下面是Oracle的数据文件目录


删除所有的文件.
[oracle@master orcl]$ rm -rf *
[oracle@master orcl]$ ls
[oracle@master orcl]$ 

这个时候千万不要关闭数据库实例

2.恢复数据文件
首先找到dbwn的进程号(PID),可以看到pid是3030
[oracle@master orcl]$ ps -ef | grep ora_dbw | grep -v grep
oracle    3030     1  0 09:14 ?        00:00:01 ora_dbw0_orcl

进入这个进程的目录
[root@master fd]# cd /proc/3030/fd


可以看到相关的文件都已经删除

现在只需要将删除的文件拷贝回原位置即可.
如cp 256 /home/oracle/app/oracle/oradata/orcl/control01.ctl

但是文件数量较大,可以使用AWK拼接命令
[root@master fd]# ll | awk '/deleted/{print "cp "$9" "$11}' > /tmp/test.sh
[root@master fd]# source /tmp/test.sh

3.同理,恢复日志文件
[root@master fd]# ps -ef | grep ora_lgwr | grep -v grep
oracle    3032     1  0 09:14 ?        00:00:09 ora_lgwr_orcl

进入lgwr进程的目录
[root@master fd]# cd /proc/3032/fd


恢复redolog
[root@master fd]# ll | awk '/deleted/{print "cp "$9" "$11}' | grep redo > /tmp/test.sh
[root@master fd]# source /tmp/test.sh

其中/tmp/test.sh的内容如下
cp 258 /home/oracle/app/oracle/oradata/orcl/redo01.log
cp 259 /home/oracle/app/oracle/oradata/orcl/redo02.log
cp 260 /home/oracle/app/oracle/oradata/orcl/redo03.log


4.重启数据库实例

文件恢复之后,停止数据库实例,重新设置文件的属主和属组(一般使用root恢复,需要重新设置为原用户)
重启数据库实例,发现控制文件不一致,用其他控制文件覆盖即可(多路复用控制文件的好处).
SQL> shutdown abort;
ORACLE instance shut down.
SQL> startup open;
ORACLE instance started.

Total System Global Area  784998400 bytes
Fixed Size    2232472 bytes
Variable Size  478154600 bytes
Database Buffers  297795584 bytes
Redo Buffers    6815744 bytes
ORA-00214: control file
'/home/oracle/app/oracle/fast_recovery_area/orcl/control02.ctl' version 1946
inconsistent with file '/home/oracle/app/oracle/oradata/orcl/control01.ctl'
version 1939


总结:
    1. 在误删除发生的时候,千万不要停止数据库 实例.只要进程还握有文件句柄,还是有可能恢复的.
    2.直接查找lgwr的进程比查找dbwn要好.因为lgwr除了握有数据文件的句柄还握有日志文件的句柄.
    3.经过实验,MySQL数据库不能使用这种方式恢复.因为MySQL进程不会握有所有文件的句柄,即使使用这种方式恢复了部分文件,也不能启动数据库实例.

参考:
http://www.xifenfei.com/5640.html

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29254281/viewspace-1408521/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/29254281/viewspace-1408521/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值