oracle中闪回错误的dml操作原理
2014-09-12 20:54
204 查看
原理: Oracle根据还原表空间信息,利用还原表空间中的数据,类似一致性读取方法,可以把表置于一个删除前的时间点(或SCN),从而将数据找回。
删除删除错误的dml操作的oracle的前提准备:
一、保证可以闪回两个小时之前的数据
show parameter undo_retention
显示事务在undo表空间中至少保存的时间。表示一个事务提交以后,该事务的数据至少要在还原表空间中保存的undo_retention参数指定的时间(秒).
alter system set undo_retention=7200
二、还原表空间相关的参数
SQL> show parameter undo;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
undo_management string AUTO
undo_retention integer 900
undo_tablespace string UNDOTBS1
其中undo_management = auto,设置自动undo管理(AUM),该参数默认设置为:auto;(必须设置为自动管理的还原表空间,否则不能实现闪回数据)
Undo_retention = n(秒),设置决定undo最多的保存时间,其值越大,就需要越多的undo表空间的支持
undo_tablespace指定系统使用的当前的还原表空间。
三、设置足够大的还原表空间
虽然设置undo中保存两个小时的数据,但是如果表空间上的dml操作过于频频导致占用了大量的undo表空间。还原表空间上没有足够的空间时oracle会使用undo_retention参数要求保留的磁盘空间,即这部分空间中的数据将被覆盖掉,无法恢复错误的dml操作。通常报错为“表结构的定义被修改了”
四、闪回错误的dml操作主要根据具体的情况有三种方法:
1、已知需要闪回的时间使用基于 as of snc(timestamp)的闪回查询获得指定时间(scn)的数据
2、闪回版本查询,查询在undo_retention指定的时间内保存的 between scn minvalue and maxvalue。获取索引的版本快照信息
3、闪回事务查询,根据闪回版本查询获得修改操作提交的事务号,根据flashback_transcation_view视图获得undo_sql来还原误操作数据
删除删除错误的dml操作的oracle的前提准备:
一、保证可以闪回两个小时之前的数据
show parameter undo_retention
显示事务在undo表空间中至少保存的时间。表示一个事务提交以后,该事务的数据至少要在还原表空间中保存的undo_retention参数指定的时间(秒).
alter system set undo_retention=7200
二、还原表空间相关的参数
SQL> show parameter undo;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
undo_management string AUTO
undo_retention integer 900
undo_tablespace string UNDOTBS1
其中undo_management = auto,设置自动undo管理(AUM),该参数默认设置为:auto;(必须设置为自动管理的还原表空间,否则不能实现闪回数据)
Undo_retention = n(秒),设置决定undo最多的保存时间,其值越大,就需要越多的undo表空间的支持
undo_tablespace指定系统使用的当前的还原表空间。
三、设置足够大的还原表空间
虽然设置undo中保存两个小时的数据,但是如果表空间上的dml操作过于频频导致占用了大量的undo表空间。还原表空间上没有足够的空间时oracle会使用undo_retention参数要求保留的磁盘空间,即这部分空间中的数据将被覆盖掉,无法恢复错误的dml操作。通常报错为“表结构的定义被修改了”
四、闪回错误的dml操作主要根据具体的情况有三种方法:
1、已知需要闪回的时间使用基于 as of snc(timestamp)的闪回查询获得指定时间(scn)的数据
2、闪回版本查询,查询在undo_retention指定的时间内保存的 between scn minvalue and maxvalue。获取索引的版本快照信息
3、闪回事务查询,根据闪回版本查询获得修改操作提交的事务号,根据flashback_transcation_view视图获得undo_sql来还原误操作数据
相关文章推荐
- Oracle的闪回技术--闪回错误的DML操作
- mysql delete错误使用where条件的操作恢复(模拟oracle闪回)
- Oracle 数据库的 dml 误操作使用闪回解决
- 闪回错误的DML操作
- Oracle 10g中闪回查询操作实例(二)
- linux下write操作原理、错误原因及处理方法
- Oracle 之 闪回操作
- Oracle 11.2.0.1执行数据泵导入导出操作,导入日志报ORA-39083和ORA-14102错误
- Oracle常用闪回操作
- ORACLE SQL总结二:集合操作符合和DML语句
- ORACLE 各种闪回操作
- Oracle连接视图DML操作的限制
- 写oracle行级触发器时,不能操作本表,报"表 *** 发生了变化,触发器/函数不能读"的错误的解决办法
- oracle数据误操作恢复【flashback闪回操作】
- oracle闪回操作
- Oracle 11g RAC操作DBCA期间报ORA-04031错误
- Oracle 10g 关闭数据库操作不当,出现ORA-10997/09968的错误
- 操作数据库表的几个DML(Oracle)
- oracle10G 错误删除数据或者表 闪回功能帮你忙。。。闪回操作例子
- 通过flashback命令回撤Oracle中误操作的Dml命令