网管联盟 | 网管论坛 | 网管u家 | 网管博客 | 网管软件 | 网管求职 | 小游戏 | 网管搜索 | 网管原创 | 网管聚合 | 网管读摘 | 网管焦点 | 世界素材 | 会员投稿 | 会员中心 
中国网管联盟
Windows Linux Cisco 网络技术 数据库 黑客攻防 DotNet Java PHP 认证 新闻资讯 服务器 存储资讯 网络设备 网管学堂 技术专题 焦点 网吧频道
 当前位置: > bitsCN.com > 数据库技术 > Oracle > 体系架构 > Oracle10g回溯版本查询追踪行变化  

Oracle10g回溯版本查询追踪行变化

2006-07-05  作者:BitsCN.com整理  来源:中国网管联盟  点评 投稿 收藏

  故障检查最棘手的问题之一是访问同一数据的应用程序间的交互作用。虽然从本质上来说,每个应用程序都循规蹈矩,但是各个应用程序可能会对数据做出不同的假定。因此,行就可能出现,发生变化,并在你最不期望它的时候消失。 网管u家bitscn.net

  过去,解决这类问题的方法是在运行两个程序以追踪所发生的事情时,将数据丢弃。Log Miner的出现使执行这一任务变得更为容易,但它使用起来较为麻烦。现在,在Oracle 10g中,有一个与Log Miner同样功能的工具,但执行起来更为方便。

网管bitscn_com

  这个工具称之为回溯版本查询,它依靠自动撤消管理特性与撤消表空间自始至终提供行图像。位于“FROM表名”之后,表别名之前,回溯版本查询语法通过指示哪些行版本要包括在SELECT内,从而证明表名的资格。其语法为:

网管网www_bitscn_com

  VERSIONS BETWEEN { SCN | TIMESTAMP}

网管bitscn_com

  {exp | MINVALUE} AND {exp | MAXVALUE} 中国网管联盟bitsCN.com

  因为它证明了表的资格,查询中的每个对象可在不同的时间点呈现。但是,你最远只能返回指定的UNDO_RETENTION参数,或最近的DDL命令(CREATE/ALTER/DROP),不管哪个在前面。

网管有家bitscn.net

  假设两个员工正在就PARTS表的一个部分描述打“编辑战”。每个人认为他或她的改变没有被数据库保存。实际上,每个人正将值改“回”到他们认为适当的地方。你可以通过提取那个行的版本历史来了解发生的内容。列表A显示了查询及其结果。 网管论坛bbs_bitsCN_com

  几个新的伪列为你提供影响行的事务信息。VERSIONS_STARTTIME和VERSIONS_STARTSCN让你了解历史记录的第一行内容。还有一个VERSIONS_XID列(未显示)指明事务ID;你可以应用它来研究其它行——甚至是在其它表中的其它行——所同时发生的变化。

网管bitscn_com

  由于发生了多次更新,你可查询数据库找出行的唯一ROWID。然后你可以使用一个相关的特性——回溯事务查询——来了解哪些用户做出过改变,他们以何种顺序提交数据。列表B显示了该查询及其结果。

网管u家bitscn.net

  这里要注意的是ROW_ID列,它与ROWID伪列不同(见下划线部分)。它只是FLASHBACK_TRANSACTION_QUERY视图中一个简单的列。 网管下载dl.bitscn.com

  现在你可以告诉这两个用户停止修改双方的工作。

网管有家bitscn.net

TAGs   变化   追踪   查询   版本   发生   一个   其它   数据   不同   两个      
 上一篇:Rails 上的 HR 模式   下一篇:构建用于位置信息开放标准的Portlet
Oracle10g回溯版本查询追踪行变化 评论:
loading.. 评论加载中…
评论:请自觉遵守互联网相关政策法规,评论不得超过250字。

验证码: 注册用户
本类热门排行:
最新推荐文章:
网管论坛交流: