闪回错误的DML操作

在oracle10g之前,如果某用户对一个表做了错误的DML语句并且已经提交,那么在没有任何备份的情况下要将数据恢复,那就必须要走不完全恢复,而不完全恢复是否可以真的恢复就完全取决于DBA的技术了。在oracle10g中有了回闪功能可以很好的处理这类问题

注: 

很多时候在首次使用 视频flashback_transaction_query 执行闪回事务查询是,列operation全是unknown 而且undo_sql 也为空,

SQL> select operation,undo_sql from flashback_transaction_query where xid=hextoraw('09000E0065060000');

OPERATION            UNDO_SQL
-------------------- ----------------------------------------------------------------------
UNKNOWN
BEGIN

出现这种情况的原因可能有如下两种

一:因为撤销表空间有限,因此flashback_transaction_query视图中只包含一部分事务,对于任何所选事务不再显示在撤销表空间的DML,operation列的值是unknown。

二:使用闪回查询前,必须先启用重做日志流的其他日志记录。重做日志流数据时撤销表空间记录的信息的补充,闪回事务查询时既需要增强的重做信息,也需要撤销表空间的撤销信息。

首先,使用alter database命令,启用对DML更改引用的列值和主键值的日志记录:

SQL> alter database add supplemental log data;

数据库已更改。

SQL> alter database add supplemental log data (primary key) columns;

数据库已更改。

注意,只有对alter database命令之后的DML操作在flashback_transaction_query中列operation和undo_sql才会有相应的值

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值