开发者社区> cnbird> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

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

简介: 今天尝试了一下,在Linux下删除一个数据文件,然后进行回复。 环境:数据库在Open的状态,然后rm -rf users.dbf (删除users表空间),最后找回users.dbf文件。
+关注继续查看

今天尝试了一下,在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。

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

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Oracle 数据库性能优化3日实战(企业培训)
课程名称一: Oracle性能优化及调整 课程时长 1天 课程深度: 高级 上机实验: 10%-30% 授课对象: Oracle开发人员、Oracle数据库管理人员,应用程序开发人员 课程描述: 本课程讲述Oracle数据库物理层规划,系统性能的监控,数据库性能参数调整,统计信息的收集,使用自动化调试工具优化数据库,I/O子系统的配置与设计以及性能优化方法论等。
1767 0
+关注
cnbird
阿里云安全专家,主要负责阿里云云产品安全。
4032
文章
3
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载