这个时候千万不要关闭数据库实例
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
可以看到相关的文件都已经删除
[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恢复,需要重新设置为原用户)
重启数据库实例,发现控制文件不一致,用其他控制文件覆盖即可(多路复用控制文件的好处).