Oracle 数据库误把表删除进行恢复

Oracle数据库恢复删除的表

可以查询出回收站中删除的表 original_name是原表名

select object_name,original_name,type,droptime
 from user_recyclebin;

对删除的表进行恢复 在上面要是能查出来就恭喜你数据库有回收站机制并在开启状态。

有同名的恢复最新删除的。

flashback table 原表名 to before drop;

– 查询所有表名

SELECT TABLE_NAME,COMMENTS from all_tab_comments where OWNER=模式名

–删除表,进入到回收站

drop table ahic_sms_interface$_;

–查看是否开启了回收站,on代表开启了

SELECT NAME, VALUE FROM V$PARAMETER WHERE NAME=recyclebin;

–关闭数据库回收站机制,初始的不让改

ALTER SYSTEM SET RECYCLEBIN=OFF;

–开启数据库回收站机制 修改 on状态,需要注意的是要指定scope=spfile,因为这个参数是不能再内存中修改的,也有10g和11g的差别需要使用不同的参数

alter system set recyclebin=on scope=spfile;

开启后需要重启数据库才生效

停止 shutdown 

开启 startup

–清空回收站

purge recyclebin;

对表进行恢复 回滚

ALTER TABLE 表名 ENABLE ROW MOVEMENT;
 
 FLASHBACK TABLE 表名 TO TIMESTAMP TO_TIMESTAMP(2021-03-03 17:39:00,YYYY-MM-DD HH24:MI:SS);
经验分享 程序员 微信小程序 职场和发展