迪士尼彩乐园博彩登录:Oracle10g?flashback系列新特性之flashback?version?qu...
来源:百度文库 编辑:九乡新闻网 时间:2024/04/30 19:31:09
Oracle10g flashback系列新特性之
flashback version qurey和flash transaction qurey
SQL> create table tt(no number,name varchar2(10));
表已创建。
SQL> insert into tt values(1,'ICEMAN');
已创建 1 行。
SQL> commit;
提交完成。
SQL> update
已更新 1 行。
SQL> commit;
提交完成。
SQL> update
已更新 1 行。
SQL> commit;
提交完成。
SQL> delete from tt;
已删除 1 行。
SQL> commit;
提交完成。
SQL> insert into tt values(2,'HAHA');
已创建 1 行。
SQL> commit;
提交完成。
SQL> col versions_starttime format a25
SQL> col versions_endtime format a25
SQL> col versions_xid format a16
SQL> select versions_starttime,versions_endtime,versions_xid,versions_operation,
VERSIONS_STARTTIME
------------------------- ------------------------- ---------------- -
NAME
----------
15-5月 -07 10.46.12 下午
ICEMAN
15-5月 -07 10.46.54 下午
BONNIE
15-5月 -07 10.47.12 下午
BON_ICE
15-5月 -07 10.47.27 下午
BON_ICE
15-5月 -07 10.49.33 下午
HAHA
过一段时间我们查一下:
SQL> select versions_starttime,versions_endtime,versions_xid,versions_operation,
VERSIONS_STARTTIME
------------------------- ------------------------- ---------------- -
NAME
----------
HAHA
只有现在的一条记录,说明UNDO中的信息已经不存在了,估计是UNDO_RETENTION的值设置太小了。
SQL> show parameter undo_retention
NAME
------------------------------------ ----------- ----------------
undo_retention
把UNDO_RETENTION设置大一点,再做一下前面的插入操作。
SQL> select versions_startscn,versions_endscn,versions_xid,versions_operation,
VERSIONS_STARTSCN VERSIONS_ENDSCN VERSIONS_XID
----------------- --------------- ---------------- - ----------
我们也可以指定一个时间段段进行查询:
SQL> select name, versions_starttime, versions_endtime,versions_operation
-15 23:15:00','yyyy-mm-dd hh24:mi:ss')
NAME
---------- ------------------------- ------------------------- -
BON_ICE
BON_ICE
HAHA
BONNIE
或者指定一个SCN段:
SQL> select name, versions_startscn, versions_endscn,versions_operation
NAME
---------- ----------------- --------------- -
BONNIE
BON_ICE
BON_ICE
HAHA
ICEMAN
也可以通过使用minvalue和maxvalue:
SQL> select name, versions_startscn, versions_endscn,versions_operation
NAME
---------- ----------------- --------------- -
BONNIE
BON_ICE
BON_ICE
HAHA
ICEMAN
SQL> select name, versions_startscn, versions_endscn,versions_operation
NAME
---------- ----------------- --------------- -
ICEMAN
BONNIE
BON_ICE
BON_ICE
SQL> select name, versions_starttime, versions_endtime,versions_operation
NAME
---------- ------------------------- ------------------------- -
BON_ICE
BON_ICE
HAHA
BONNIE
在上面的查询中,
VERSIONS_STARTTIME,VERSIONS_ENDTIME,VERSIONS_STARTSCN,VERSIONS_ENDSCN,
VERSIONS_XID,VERSIONS_OPERATION是类似ROWNUM, LEVEL的伪列。
其中VERSIONS_STARTTIME,VERSIONS_ENDTIME,VERSIONS_STARTSCN,VERSIONS_ENDSCN是取得修改发生时的时间或者SCN。 VERSIONS_XID 是修改事务的标识号
可在视图FLASHBACK_TRANSACTION_QUERY中有得到更多的信息,如下:
SQL> insert into tt values(2,'HAHAHA');
已创建 1 行。
SQL> insert into tt values(3,'HAHAHA');
已创建 1 行。
SQL> insert into tt values(4,'HAHAHA');
已创建 1 行。
SQL> insert into tt values(5,'HAHAHA');
已创建 1 行。
SQL> COMMIT;
提交完成。
SQL> select versions_startscn,versions_endscn,versions_xid,versions_operation,
VERSIONS_STARTSCN VERSIONS_ENDSCN VERSIONS_XID
----------------- --------------- ---------------- - ----------
SQL> SELECT UNDO_SQL
UNDO_SQL
----------------------------------------------------------------
delete from "SYS"."TT" where ROWID = 'AAAMsdAABAAAO5iAAE';
delete from "SYS"."TT" where ROWID = 'AAAMsdAABAAAO5iAAD';
delete from "SYS"."TT" where ROWID = 'AAAMsdAABAAAO5iAAA';
delete from "SYS"."TT" where ROWID = 'AAAMsdAABAAAO5iAAC';
这些语句对应了上面我们所做的一些插入操作,如果想回滚这些信息,可以执行上面的undo_sql。
SQL> desc