暂无图片
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
打赏 0
暂无图片
回答交流
Markdown


请输入正文
提交
相关推荐
请问,该用户创建的表,怎么禁止用户truncate的权限
回答 2
已采纳
SYS用户下建立如下TRIGGER,假设UNIVERSITY用户下的表禁止TRUNCATE:CREATEORREPLACETRIGGERDTTriggerBEFORETRUNCATEONDATABAS
哪位知道vs 2019 总是报错啥意思?
回答 1
你去看看这个路径下有没有这个文件呢?
高水位
回答 1
对于表,在线操作shrink(避开业务高峰期去做),停业务操作可用move,move后必须重建索引。
alterlog报错
回答 4
ifconfiglomtu16384我这个lo的值是65536了还需要修改吗
Oracle报错:ORA-12528: TNS: 监听程序: 所有适用例程都无法建立新连接,怎么解决?
回答 1
1、检查alert日志是否达到最大连接数;2、检查监听是否正常;3、检查连接程序是否写错服务名。
IMPDP能否忽略CONSTRAINT的校验
回答 5
路过,学习了。。。。。。。。。。。。。。。。。
主备的切换,主库在跑的job,而且是实时跑的。当把备库切换成主库? 新的主库job会继续跑吗?
回答 4
新主库job到点自然会跑,不确定的话自己搭个简单的job验证一下呗
Oracle sqldeveloper工具把sql server数据库迁移到Oracle:在迁移过程中,这个工具会生成一个脚本把sql server的表和数据迁移到Oracle,提示脚本运行失败
回答 1
错误信息可以放出来
Oracle 12.2 rac grid打补丁报错
回答 1
这是权限问题,你这是节点一还是节点二上发生的
Oracle 12C的库 能迁移到19C上吗?(数据泵方式导出的DMP)
回答 1
已采纳
可以,字符集一样就没问题。主要是看应用的兼容性。
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~