Linux环境下利用句柄恢复Oracle误删除的数据文件

在误删除Oracle的数据文件后,如果未关闭数据库,文件句柄还没有释放,且被删除的数据文件占用的磁盘块未被复写,则可以利用句柄的方式来恢复数据文件。下面模拟恢复过程。

(一)环境

OS版本:redhat 6.6

Linux环境下利用句柄恢复Oracle误删除的数据文件

数据库版本:Oracle 11.2.0.1

Linux环境下利用句柄恢复Oracle误删除的数据文件

(二)恢复操作

首先,模拟误删除数据库的数据文件。这里删除表空间TBS04下面的数据文件tbs04.bdf:

Linux环境下利用句柄恢复Oracle误删除的数据文件

这个时候绝对不能关闭数据库,一旦关闭数据库,则无法恢复。

删除后查看DBWN进程,进程号为3032

Linux环境下利用句柄恢复Oracle误删除的数据文件

进入这个进程的目录,可以看到我们删除的文件

Linux环境下利用句柄恢复Oracle误删除的数据文件

只需要将删除的文件复制回去即可

Linux环境下利用句柄恢复Oracle误删除的数据文件

经过确认,文件已经恢复到指定目录

Linux环境下利用句柄恢复Oracle误删除的数据文件

此时,重启数据库,发现数据文件不一致,需要执行数据文件恢复

Linux环境下利用句柄恢复Oracle误删除的数据文件

先将13号文件离线

Linux环境下利用句柄恢复Oracle误删除的数据文件

对其进行恢复操作,通过归档日志进行恢复

Linux环境下利用句柄恢复Oracle误删除的数据文件

将13号文件联机上线

Linux环境下利用句柄恢复Oracle误删除的数据文件

改变数据库到open状态

Linux环境下利用句柄恢复Oracle误删除的数据文件

完成恢复。

需要注意的是:

1.数据文件被删除后,数据库一定不能被关闭,否则句柄释放了,就无法使用这种方法进行恢复;

2.也可用lgwr进程来做数据文件、在线重做日志文件。

上一篇:内置函数---eval、exec、compile


下一篇:Python3基础 内置函数 eval str转为list tuple dict