误删Oracle数据文件的恢复方法

今天尝试了一下,在Linux下删除一个数据文件,然后进行回复。

环境:数据库在Open的状态,然后rm -rf users.dbf (删除users表空间),最后找回users.dbf文件。

在回复的时候,回复的方法跟数据库的版本关系不大(因为是物理文件),只是跟操作系统有一定的关系,如:Red hat Linux  , Solaris Linux 等等。

下面进行演示:

删除users表空间.

1、我们首先进入Sqlplus,然后执行SQL语句:

 

 2、此时,users表空间已经被删除了,我们已经无法在users表空间上建立表了。

尝试在users表空间上建立名字为abcd123的表,已经没法建立了。

3、确认dbwr进程PID

通过命令,我们可以看到当前数据库实例的dbwr的PID。因为我同一台主机上有两个实例,故有2个。

一个为prod,另一个为oms。

4、因为dbwr会打开所有数据文件的句柄。所以可以进入proc目录进行查找,格式为:

cd /prod/PID/fd

此处,fd为文件描述符。

 

我们可以清楚的看到 /u01/app/oracle/oradata/prod/disk2/users01.dbf (deleted) 的字样,表示此文件已经被删掉了。

5、进行恢复

通过cp命令,把语句柄拷贝回原来的位置。

cp 24 /u01/app/oracle/oradata/prod/disk2/users01.dbf

此处的24为其给出的编号。

 

6、进入recovery

执行以下SQL命令:

至此,回复完成!

 

7、测试

我们重新尝试在users 表空间上建立一个table。

我们可以发现,建立成功了,说明回复成功,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值