【Oracle】Drop表后闪回

本文介绍在特定条件下如何使用Oracle数据库的闪回功能恢复误删除的表,包括直接从回收站闪回表的方法及在遇到同名表时如何通过改名进行闪回。

本文介绍的闪回方式只适用于:删除表的表空间非system,drop语句中没有purge关键字(以上两种情况的误删除操作只能通过日志找回):

1.删除表后直接从回收站闪回

SCOTT@LGR> drop table emp1;

Table dropped.
SCOTT@LGR> select object_name,original_name,operation from recyclebin where original_name='EMP1';

OBJECT_NAME                     ORIGINAL_NAME  OPERATION                  
------------------------------  -------------  ---------
BIN$QxD9et5lIi3gUwEAAH/pOw==$0  EMP1            DROP                  
SCOTT@LGR> flashback table"BIN$QxD9et5lIi3gUwEAAH/pOw==$0" to before drop;

Flashback complete.

2.当数据库中存在和删除表同名的表,则删除表需要在闪回的同时修改为其他名字,否则闪回失败

SCOTT@LGR> drop table emp1;

Table dropped.

SCOTT@LGR> create table emp1 (id number);

Table created.

SCOTT@LGR> select object_name,original_name,operation from recyclebin
  2  where original_name='EMP1';

OBJECT_NAME                    ORIGINAL_NAME    OPERATION                
------------------------------ --------------
BIN$QxD9et5mIi3gUwEAAH/pOw==$0 EMP1             DROP

SCOTT@LGR> flashback table"BIN$QxD9et5mIi3gUwEAAH/pOw==$0" to before drop;
flashback table"BIN$QxD9et5mIi3gUwEAAH/pOw==$0" to before drop
*
ERROR at line 1:
ORA-38312: original name is used by an existing object
SCOTT@LGR> flashback table"BIN$QxD9et5mIi3gUwEAAH/pOw==$0" to before drop rename to emp2;

Flashback complete.
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值