oracle 误删数据恢复
2017-12-21 15:00
344 查看
在删除数据的时候不小心,把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的内部时钟机制,可被看作逻辑时钟,这对于恢复操作是至关重要的
注释:Oracle 仅根据 SCN 执行恢复。
它定义了数据库在某个确切时刻提交的版本。在事物提交时,它被赋予一个唯一的标示事物的SCN 。一些人认为 SCN 是指, System Commit Number ,而通常 SCN 在提交时才变化,所以很多情况下,这两个名词经常被交替使用。
究竟是哪个词其实对我们来说并不是最重要的,重要的是我们知道 SCN 是 Oracle 内部的时钟机制, Oracle 通过 SCN 来维护数据库的一致性,并通过SCN 实施 Oracle 至关重要的恢复机制。
1:执行下面语句,将删除时间转换为scn
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
文章转自 :http://www.cnblogs.com/chaizp/p/5192522.html
第一种:
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的内部时钟机制,可被看作逻辑时钟,这对于恢复操作是至关重要的
注释:Oracle 仅根据 SCN 执行恢复。
它定义了数据库在某个确切时刻提交的版本。在事物提交时,它被赋予一个唯一的标示事物的SCN 。一些人认为 SCN 是指, System Commit Number ,而通常 SCN 在提交时才变化,所以很多情况下,这两个名词经常被交替使用。
究竟是哪个词其实对我们来说并不是最重要的,重要的是我们知道 SCN 是 Oracle 内部的时钟机制, Oracle 通过 SCN 来维护数据库的一致性,并通过SCN 实施 Oracle 至关重要的恢复机制。
1:执行下面语句,将删除时间转换为scn
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
文章转自 :http://www.cnblogs.com/chaizp/p/5192522.html
相关文章推荐
- Oracle闪回技术之一Oracle 11g 利用FlashTable (闪回表)恢复(用delete)误删的数据
- oracle误删磁盘数据后不能连接数据库 如何恢复
- Linux 平台下 误删 oracle 数据文件的恢复方法
- oracle误删数据怎么恢复
- Oracle drop 或者误删表数据恢复的两种实用方法
- Oracle闪回技术之一Oracle 11g 利用FlashTable (闪回表)恢复(用delete)误删的数据
- Oracle闪回技术之一Oracle 11g 利用FlashTable (闪回表)恢复(用delete)误删的数据
- 兴奋啊,使用oracle的flashback搞定误删数据的恢复
- Oracle 误删数据恢复
- oracle数据表误删恢复
- oracle如何恢复误删数据
- oracle误删数据恢复
- [转]oracle误删数据的恢复
- ORACLE Linux 平台下 误删 oracle 数据文件的恢复方法
- oracle 误删 恢复数据
- oracle误删数据恢复 恢复到某一时间点
- oracle误删数据恢复方法
- Oracle闪回技术之一Oracle 11g 利用FlashTable (闪回表)恢复(用delete)误删的数据
- oracle之数据误删恢复
- ORACLE误删数据文件目录恢复