闪回错误的DML操作

来源:互联网 发布:软件性能测试报告案例 编辑:程序博客网 时间:2024/06/05 03:43
在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才会有相应的值

原创粉丝点击