利用oracle flashback技术恢复数据之 ――事务级别闪回
2013-04-17 02:47
597 查看
利用oracle flashback技术恢复数据之 ——事务级别闪回 Oracle从9i版本就将flashback技术引入到数据库中,在10g以后,闪回的性能更为完善强大,可以恢复除了文件损坏、介质错误等故障外所有的数据。 Flashback可恢复的级别有4种。分别为:事务闪回(可对具体的insert、delete、update等操作进行恢复)、行级闪回(针对错误操作,可恢复到具体的某个时间点) http://www.ningbo2000.com 、表级闪回(可将错误的drop表操作进行恢复)、数据库级闪回(能将错误的导入的多个表数据恢复到某个时间点)。 下面进行实例测试: SQL> select * from dept order by deptno; DEPTNO DNAME LOC ---------- -------------------- -------------------- 10 test guangzhou 20 a beijing 30 b shanghai 40 c shenzhen 50 d shenzhen 由上可知:目前dept部门表中有5个部门。接下来向dept表中插入新数据。 SQL> insert into dept values(60,'e','xianggang'); 1 row created. SQL> insert into dept values(70,'f','shandong'); 1 row created. 接下来查看一下表中是否有新部门添加。 SQL> select * from dept; DEPTNO DNAME LOC ---------- -------------------- -------------------- 60 e xianggang 20 a beijing 70 f shandong 40 c shenzhen 30 b shanghai 10 test guangzhou 50 d shenzhen 7 rows selected。 由上可看到表中已经有新部门添加。接下来查看一下是否有可恢复的数据。 SQL> set line 500; SQL> select versions_starttime, versions_endtime, versions_xid,versions_operation from dept versions between timestamp minvalue and maxvalue; VERSIONS_STARTTIME VERSIONS_ENDTIME VERSIONS_XID V --------------------------------------------------------------------------- --------------------------------------------------------------------------- ---------------- - 由上可知:目前没test用户的可闪回的数据。 原因是什么呢 我们继续做一个测试。先将原本插入的数据提交。然后再查看可闪回的数据信息。 SQL> commit; Commit complete. SQL> select versions_starttime, versions_endtime, versions_xid,versions_operation from dept versions between timestamp minvalue and maxvalue; VERSIONS_STARTTIME VERSIONS_ENDTIME VERSIONS_XID V --------------------------------------------------------------------------- --------------------------------------------------------------------------- ---------------- - 27-MAR-13 09.10.55 AM 0100020052010000 I 27-MAR-13 09.10.55 AM 0100020052010000 I 由上可知:更新数据必须要commit提交之后,才能使用flashback功能。由上图可知:0100020052010000 为操作数据的xid,I为insert的意思。 接下来根据xid可以查询到可供回滚的undo sql语句。此处要注意:查询回滚语句必须在sys或者system用户下执行。 SQL> conn / as sysdba; Connected. SQL> select undo_sql from flashback_transaction_query where xid=hextoraw ('0100020052010000'); UNDO_SQL ---------------------------------------------------------------------------------------------------- delete from "TEST"."DEPT" where ROWID = 'AAAD9HAAEAAAAAKAAD'; delete from "TEST"."DEPT" where ROWID = 'AAAD9HAAEAAAAAKAAB'; 然后执行红字部分的undo_sql语句。 SQL> delete from "TEST"."DEPT" where ROWID = 'AAAD9HAAEAAAAAKAAD'; 1 row deleted. SQL> delete from "TEST"."DEPT" where ROWID = 'AAAD9HAAEAAAAAKAAB'; 1 row deleted. SQL> select * from test.dept; DEPTNO DNAME LOC ---------- -------------------- -------------------- 20 a beijing 40 c shenzhen 30 b shanghai 10 test guangzhou 50 d Shenzhen 看一下默认可回滚的数据的时间。 SQL> conn / as sysdba; Connected. SQL> show parameter undo; NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ undo_management string AUTO undo_retention integer 900 undo_tablespace string UNDOTBS1 由上可知默认是可回滚900秒内误操作的数据。 可回滚的时间15分钟时间太短,可根据实际需要修改时间值。 SQL> alter system set undo_retention=9000 scope=spfile; System altered. SQL> startup force ORACLE instance started. Total System Global Area 473956352 bytes Fixed Size 1262452 bytes Variable Size 188746892 bytes Database Buffers 281018368 bytes Redo Buffers 2928640 bytes Database mounted. Database opened. SQL> show parameter undo_retention; NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ undo_retention integer 9000 上可知:可回滚时间已修改为150分钟。当然前提是还原表空间要足够大。如果还原表空间是自动管理配置,而且还原表空间足够大,那么undo_retention参数的值并不会影响到数据恢复,如果要恢复的数据很大,能恢复的数据会按照先入先出原则进行覆盖。 以上实验只测试了insert操作,delete,update操作回滚的操作以及原理都是一致的,就不再做测试了。 本文出自 “greetwin” 博客,请务必保留此出处http://greetwin.blog.51cto.com/6238812/1178881 http://www.fpfuzhou.com
相关文章推荐
- 利用oracle flashback技术恢复数据之 ――事务级别闪回
- Oracle闪回技术之一Oracle 11g 利用FlashTable (闪回表)恢复(用delete)误删的数据
- 利用Oracle闪回技术恢复误操作数据
- Oracle闪回技术之一Oracle 11g 利用FlashTable (闪回表)恢复(用delete)误删的数据
- Oracle闪回技术之一Oracle 11g 利用FlashTable (闪回表)恢复(用delete)误删的数据
- oracle利用flashback 闪回功能恢复delete数据
- Oracle闪回技术之一Oracle 11g 利用FlashTable (闪回表)恢复(用delete)误删的数据
- Oracle闪回技术之一Oracle 11g 利用FlashTable (闪回表)恢复(用delete)误删的数据
- oracle数据误操作恢复【flashback闪回操作】
- oracle使用闪回技术中恢复误删除和修改的表及数据
- oracle 利用闪回功能恢复数据
- 利用ORACLE的闪回功能恢复数据
- Oracle Flashback技术总结(恢复数据到某一刻)
- Oracle闪回技术在数据恢复中的应用
- 用Oracle闪回功能(flashback)恢复删除的数据
- 用Oracle闪回功能(flashback)恢复删除的数据---Oracle;闪回;回滚段;数据恢复
- 用Oracle闪回功能(flashback)恢复删除的数据---Oracle;闪回;回滚段;数据恢复
- Oracle9 利用闪回功能恢复偶然丢失的数据
- 用Oracle闪回功能(flashback)恢复删除的数据---Oracle;闪回;回滚段;数据恢复
- oracle删除数据后的闪回技术--重现数据库(Flashback Database)