Oracle 恢复被删除的数据,解决误操作删除数据
恢复ORACLE被误更新或删除数据的办法 原文:点击打开链接 在删除数据的时候不小心,把delete语句执行错了,把别的表给delete,而且还执行了commit!真汗.......数据是相当的重要........废话少说了!赶快找方法吧: 第一种: 1.打开Flash存储的权限 ALTER TABLE tableName ENABLE row movement ;2.把表还原到指定时间点 flashback table tableName to timestamp to_timestamp(''2011-02-28 10:40:00'',''yyyy-mm-dd hh24:mi:ss'');后面的参数为要还原的时间点 第二种:利用ORacle的快照进行查找某个时间点的数据 select * from tableName AS OF TIMESTAMP (SYSTIMESTAMP - INTERVAL '100' MINUTE) 或 select * from tableName as of timestamp to_timestamp('2011-05-21 11:40:00','YYYY-MM-DD HH24:MI:SS'); 这样可以查询到指定的时间段的数据,再把查询到的数据复制到原来的表中。 第三种:其他(在别的地方找到的答案,但还没有试过!) 删除表后,可以采用如下操作:在 查询表user_recyclebin最近操作过的表名称,然后用闪回(只能用于10G及以上版本)。
select * from user_recyclebin; FLASH BACK TABLE TABLE_NAME TO BEFORE DROP; 如果是删了或修改里面的数据,可以先建立一个快表将删除修改之前状态的数据找回到这个表中:
CREATE TABLE QUICK_TABLE AS SELECT * FROM TABLE_NAME AS OF TIMESTAMP SYSTEM-1/24 (一小时前的),减去的时间可以自己定。 第四:通过SCN实现 SCN(系统改变号),它的英文全拼为:System Change Number ,它是数据库中非常重要的一个数据结构。 SCN提供了Oracle的内部时钟机制,可被看作逻辑时钟,这对于恢复操作是至关重要的
select timestamp_to_scn(to_timestamp('2011-08-03 10:00:00','YYYY-MM-DD HH:MI:SS')) from dual; 结果:11837812:在将table的scn点取出来。
select * from moAS OF SCN 11837813; 最后把查出来得结果insert到原表中
insert into mo select * from mo AS OF SCN 1183781 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |