数据库正常,误删了表空间,但只有误删表空间的.dbf数据文件,能恢复数据吗?

dennyjava 2010-07-01 09:53:55
各位大侠:
我的数据库还正常,只是不小心误删了一个应用的表空间,但我有这个误删表空间的.dbf数据文件。现我在数据库下重新建一表空间,能利用误删表空间的dbf文件把数据恢复吗?

急啊。谢谢。
...全文
381 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
yuxinglian 2010-07-01
  • 打赏
  • 举报
回复
开了数据库闪回也可以恢复呀
Dave 2010-07-01
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 dennyjava 的回复:]
是这样的。我的数据库安装在本地硬盘上,表空间的数据文件保存在SAN上,前段时间san卡有问题,同事在san没连上的情况下把表空间给删掉了。所以现在数据库在,只剩下san下的dbf文件。
请问:恢复有办法吗?
[/Quote]

只能通过备份来..如果没有备份,就恢复不了了..
dennyjava 2010-07-01
  • 打赏
  • 举报
回复
是这样的。我的数据库安装在本地硬盘上,表空间的数据文件保存在SAN上,前段时间san卡有问题,同事在san没连上的情况下把表空间给删掉了。所以现在数据库在,只剩下san下的dbf文件。
请问:恢复有办法吗?
Dave 2010-07-01
  • 打赏
  • 举报
回复
[Quote=引用楼主 dennyjava 的回复:]
各位大侠:
我的数据库还正常,只是不小心误删了一个应用的表空间,但我有这个误删表空间的.dbf数据文件。现我在数据库下重新建一表空间,能利用误删表空间的dbf文件把数据恢复吗?

急啊。谢谢。
[/Quote]

只能通过备份来恢复,如果没有备份,就无法恢复。

你的数据文件是怎么删掉的,数据库在打开的时候是无法删除数据文件的。
数据文件头里保存了最新的SCN。 这个和控制文件里的保持一致时才能正常启动。 如果直接恢复,数据库是启动不了的。



------------------------------------------------------------------------------
Blog: http://blog.csdn.net/tianlesoftware
网上资源: http://tianlesoftware.download.csdn.net
相关视频:http://blog.csdn.net/tianlesoftware/archive/2009/11/27/4886500.aspx
DBA1 群:62697716(满); DBA2 群:62697977
balance001 2010-07-01
  • 打赏
  • 举报
回复
可以的
liuyi8903 2010-07-01
  • 打赏
  • 举报
回复
有一直以来的归档日志吗?
balance001 2010-07-01
  • 打赏
  • 举报
回复
oracle 9i 表空间误删除的恢复方法
日志。
Errors in file /opt/ora9/admin/xwoa/udump/xwoa_ora_17933.trc:
ORA-01115: 从文件 16 读取块时出现 IO 错误 (块 # 189544)
ORA-27072: skgfdisp: I/O 错误
Linux Error: 25: Inappropriate ioctl for device
Additional information: 189543
靠,数据表空间文件被删除。
好在数据库采用了归档模式。
开始恢复:
1、SQL>shutdown immediate
备份全部数据文件和控制文件和log以防恢复过程中出现问题。
2、SQL> startup mount;
3、SQL> alter database create datafile '/opt/ora9/oradata/xwoa/CHAOYANGJP.dbf' as '/opt/ora9/oradata/xwoa/CHAOYANGJP.dbf' reuse;
创建误删除的数据文件。
4、recover datafile '/opt/ora9/oradata/xwoa/CHAOYANGJP.dbf';

ORA-00279: 更改 57900012 (在 09/19/2007 10:27:05 生成) 对于线程 1 是必需的
ORA-00289: 建议: /opt/ora9/oradata/xwoa/archive/1_863.dbf
ORA-00280: 更改 57900012 对于线程 1 是按序列 # 863 进行的


指定日志: {<RET>=suggested | filename | AUTO | CANCEL}
输入:AUTO回车
开始恢复过程,这个时间比较长。

5、SQL> select d.file#,d.name,d.status,h.status from v$datafile d,v$datafile_header
h where d.file#=h.file# ;
查看一下数据文件是否online。
如果没有online,
6、SQL> ALTER DATABASE DATAFILE '/opt/ora9/oradata/xwoa/CHAOYANGJP.dbf' ONLINE;
ok!完成恢复过程。
Dave 2010-07-01
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 yuxinglian 的回复:]
开了数据库闪回也可以恢复呀
[/Quote]

闪回是有限制的, Flashback Database 的前提是数据文件必须存在,如果不存在,就要先用RMAN restore 出数据文件,然后才能进行Flashback Database。

Flashback Database 默认也是关闭的,需要启动后才行。

Oracle Flashback 技术 总结
http://blog.csdn.net/tianlesoftware/archive/2009/10/16/4677378.aspx

3,494

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧