ORACLE—误删表后的恢复

本文介绍了如何利用ORACLE的闪回机制从数据库的回收站找回误删除的表和索引,包括从回收站查找删除记录、生成恢复SQL语句并执行恢复操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

利用ORACLE闪回机制,将删除的表闪回回来(对于表的删除,不需要启动数据库的闪回开关,即可从数据库的回收站中找回)
sql>select * from user_recyclebin where DROPTIME >'2010-03-08 09:00:00';--删除时间为字符串,找到误删除的表;
sql >select 'flashback table '||ORIGINAL_NAME||' to before drop;' from user_recyclebin where DROPTIME >'2010-03-08 09:00:00' and type = 'TABLE';--生成闪回表的语句,保存结果1
sql >select 'ALTER INDEX "'||OBJECT_NAME||'" rename to '||ORIGINAL_NAME||';'  from user_recyclebin where DROPTIME >'2010-03-08 09:00:00' and type = 'INDEX';--生成将所有索引恢复名字,保存结果2
sql >select 'ALTER TRIGGER "'||OBJECT_NAME||'" rename to '||ORIGINAL_NAME||';'  from user_recyclebin where DROPTIME >'2010-03-08 09:00:00' and type = 'TRIGGER';--生成将所有触发器恢复名字,保存结果3

2)所有已删除的表,都进入了ORACLE得回收站(drop table ab01 purge为直接删除不进回收站,停留时间由表空间大小决定,空间不够自动回收),但删除的表,又重新创建了一样的表名,所以不能直接闪回,要先删除这些表
sql >select 'drop table '||ORIGINAL_NAME||' cascade constraint;' from user_recyclebin where DROPTIME >'2010-03-08 09:00:00' and type = 'TABLE';--生成 删除这些新表的结果4

3)执行结果4

4)执行结果1

5) 执行结果2

6) 执行结果3

检查表和索引、数据、触发器,应该基本都恢复了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值