首先,使用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才会有相应的值
SQL> update student set
snum=200605,add_col='boy in ChengDu' where sid=24;
已更新 1 行。
SQL> commit;
提交完成。
SQL> select
operation,undo_sql
2 from
flashback_transaction_query
3 where
xid=hextoraw('01001A00CE040000');
OPERATION UNDO_SQL
--------------------
----------------------------------------------------------------------
UPDATE update "SU"."STUDENT" set "SNUM" = '21', "ADD_COL" = 'null' where
ROWI
D = 'AAASU1AAEAAAAI9AAA';
BEGIN
另外补充一点,用户在执行闪回事务查询之前,必须为用户授予适当的DBMS_FLASHBACK包上的权限。
grant execute on
dbms_flashback to user;
grant select any transaction
to user;