暂无图片
Oracle表被误删除,drop后新建了表并产生了数据,如何恢复误删除表?
我来答
分享
S
sunKJ
2021-08-24
Oracle表被误删除,drop后新建了表并产生了数据,如何恢复误删除表?

请教个问题,有张表被误drop了,误drop后自己重新建表后产生数据了,使用闪回后恢复不了之前的数据了,这个要怎么恢复呢?
闪回到drop的时间点报表的定义已经发生改变了,报错ORA-01466: unable to read data - table definition has changed

我来答
添加附件
收藏
分享
问题补充
1条回答
默认
最新
每日一步

1、以下演示emp表被drop table后的恢复操作;

1步: 创建emp表,只有2条记录;

SQL> create table emp as select * from scott.emp where rownum<=2;

Table created.

SQL> select count(*) from emp;

COUNT(*)

     2

2步: 模拟误操作;

SQL> drop table emp;

Table dropped.

3步: 新增emp表,记录有14条;

SQL> create table emp as select * from scott.emp;

Table created.

SQL> select count(*) from emp;

COUNT(*)

    14

4步: 查看当前回收站信息

SQL> select object_name,original_name from recyclebin;

OBJECT_NAME ORIGINAL_NAME


BIN$yk0/yUmybfXgU9MBqMAqtw==$0 EMP

5步: 恢复emp表,并重命名emp_new

SQL> flashback table “BIN$yk0/yUmybfXgU9MBqMAqtw==$0” to before drop rename to emp_new;

Flashback complete.

SQL> select count(*) from emp_new;

COUNT(*)

     2

【小结】

A、要使用flashback drop功能恢复误删除的表,需要做如下准备:
确认被删除的表在Recycle Bin中的名称;
确认名称后,使用flashback table就可以了,并且该对象的关联对象也会被自动恢复;
B、但对象的参考约束不会被恢复,也就是指向该对象的外键约束需要重建;

暂无图片 评论
暂无图片 有用 1
暂无图片
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏