Oracle 恢复被删除的数据,解决误操作删除数据
2017-03-29 15:19
232 查看
恢复ORACLE被误更新或删除数据的办法
原文:点击打开链接
在删除数据的时候不小心,把delete语句执行错了,把别的表给delete,而且还执行了commit!真汗.......数据是相当的重要........废话少说了!赶快找方法吧:
第一种:
1.打开Flash存储的权限
ALTER TABLE tableName ENABLE row movement ;2.把表还原到指定时间点
第二种:利用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
原文:点击打开链接
在删除数据的时候不小心,把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
相关文章推荐
- Oracle 恢复被删除的数据,解决误操作删除数据
- oracle数据文件被误操作删除了恢复方法
- 【转载】linux中误删除oracle数据文件的恢复操作
- 【转载】linux中误删除oracle数据文件的恢复操作 分类: H2_ORACLE 2013-06-14 12:07 353人阅读 评论(0) 收藏
- Linux下ORACLE误删除数据文件恢复操作
- Oracle 11g 数据恢复 数据误删除后的恢复 0、执行 select log_mode from v$database;查看是否为归档模式 1、确定删除时间和被删除的表 04-23,GR
- 【转载】linux中误删除oracle数据文件的恢复操作
- 【转载】linux中误删除oracle数据文件的恢复操作
- Linux下ORACLE误删除数据文件恢复操作
- 【转载】linux中误删除oracle数据文件的恢复操作
- 【转载】linux中误删除oracle数据文件的恢复操作
- 意外删除Oracle数据文件(dbf),恢复oralce库的解决办法--Oracle错误代码:ORA-01033
- oracle误操作删除数据的回滚
- 用Oracle闪回功能恢复偶然丢失的数据--数据被误删除了,多亏了万能的oracle,....后怕
- Oracle 数据库删除,恢复数据
- 【总结】oracle恢复误删除数据,解除锁定的等sql语句
- Oracle中删除表,删除数据以及恢复数据
- oracle中关于表的所有操作(创建删除表,修改表结构,创建约束,操作表数据,增删改查等)
- ORACLE误删除数据的恢复方法
- 用Oracle闪回功能(flashback)恢复删除的数据