免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 917 | 回复: 0
打印 上一主题 下一主题

flashback version query [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-12-21 08:44 |只看该作者 |倒序浏览
flashback 是9i中提出的一个特性,它可以让我们查看undo段中的信息。在10g中,flashback的功能增强了,我们可以通过它查看某个期间里不同版本的undo数据。
例子如下:
首先创建一个表:
SQL> CREATE TABLE fbt
2 ( x INTEGER
3 , y TIMESTAMP
4 , z VARCHAR2(30) );
第二步插入数据
INSERT INTO fbt VALUES (1, LOCALTIMESTAMP, 'Initial population');
第三步更新数据
UPDATE fbt SET y = LOCALTIMESTAMP, z = 'First update';
第四步再次更新数据
UPDATE fbt SET y = LOCALTIMESTAMP, z = 'Second update';
第五步删除数据
truncate table sbt
(注意每一步之后都要commit)


这时可以用flashback version query来查看下。
flashback version query就是在select语句后面加上如下语法结构
• VERSIONS BETWEEN TIMESTAMP [lower bound] AND [upper bound];
• VERSIONS BETWEEN SCN [lower bound] AND [lower bound].
这里的lower bound upper bound 可以是timestamp / scn的值,也可以是minvalue maxvalue这两个关键字。
例如:
SQL> SELECT x, y, z
2 FROM fbt VERSIONS BETWEEN TIMESTAMP MINVALUE AND MAXVALUE
3 ORDER BY
4 y;

得到的结果如下
SYS@DCSSS > select * from scott.fbt versions between timestamp minvalue and maxvalue order by y;

X Y Z
-
1 13-JUN-2011 16:42:45.112 Initial population
1 13-JUN-2011 16:45:13.892 first update
1 13-JUN-2011 16:45:53.105 second update
1 13-JUN-2011 16:45:53.105 second update
看最后两行的记录,会有混淆,为了避免这种混淆,oracle提供了一些虚列来帮助我们区分。
这些虚列如下
VERSIONS_STARTTIME (start timestamp of version);
VERSIONS_STARTSCN (start SCN of version);
VERSIONS_ENDTIME (end timestamp of version);
VERSIONS_ENDSCN (end SCN of version);
VERSIONS_XID (transaction ID of version); and
VERSIONS_OPERATION (DML operation of version).

SELECT z , VERSIONS_STARTTIME , VERSIONS_ENDTIME , VERSIONS_XID , VERSIONS_OPERATION FROM scott.fbt VERSIONS BETWEEN TIMESTAMP MINVALUE AND MAXVALUE ORDER BY VERSIONS_ENDTIME;

Z VERSIONS_STARTTIME VERSIONS_ENDTIME VERSIONS_XID V
- - -
Initial population 13-JUN-2011 16:43:19.000 13-JUN-2011 16:45:25.000 000A00150008812E I
first update 13-JUN-2011 16:45:25.000 13-JUN-2011 16:46:05.000 000B00280005560A U
second update 13-JUN-2011 16:46:05.000 13-JUN-2011 16:46:13.000 000A000E00088146 U
second update 13-JUN-2011 16:46:13.000 0003000700078091 D

通过上面的语句可以查到更多的信息,比如执行操作的transaction id
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP