知识大全 闪回版本查询

Posted 汇率

篇首语:与理想平等交易,同喧嚣保持距离。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 闪回版本查询相关的知识,希望对你有一定的参考价值。

OracleDatabase10g:闪回版本查询  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  不需要设置 立即识别对行的所有更改

  在 Oracle i Database 中 我们看到它推出了以闪回查询形式表示的 时间机器 该特性允许 DBA 看到特定时间的列值 只要在还原段中提供该数据块此前镜像的拷贝即可 但是 闪回查询只提供某时刻数据的固定快照 而不是在两个时间点之间被更改数据的运行状态表示 某些应用程序 如涉及到外币管理的应用程序 可能需要了解一段时期内数值数据的变化 而不仅仅是两个时间点的数值 由于闪回版本查询特性 Oracle Database g 能够更方便高效地执行该任务

  查询对表的更改

  在本示例中 我使用了一个银行外币管理应用程序 其数据库含有一个名称为 RATES 的表 用于记录特定时间的汇率

  SQL> desc rates    Name              Null?Type        CURRENCY                   VARCHAR ( )    RATE                       NUMBER( )

  该表显示 US$ 与各种其他货币的汇率 在 CURRENCY 列中显示 在金融服务行业中 汇率不但在变更时进行更新 而且被记录在历史中 需要这种方式的原因是银行交易可能在 过去时间 生效 以便适应由于汇款而耗费的时间 例如 对于一项在上午 : 发生但在上午 : 生效的交易 其有效汇率是上午 : 的汇率 而不是现在的汇率

  直到现在 唯一的选择是创建一个汇率历史表来存储汇率的变更 然后查询该表是否提供历史记录 另一种选择是在 RATES 表本身中记录特定汇率适用性的开始和结束时间 当发生变更时 现有行中的 END_TIME 列被更新为 SYSDATE 并插入一个具有新汇率的新行 其 END_TIME 为 NULL

  但是在 Oracle Database g 中 闪回版本查询特性不需要维护历史表或存储开始和结束时间 使用该特性 您不必进行额外的设置 即可获得某行在过去特定时间的值

  例如 假定该 DBA 在正常业务过程中数次更新汇率 ― 甚至删除了某行并重新插入该行

  insert into rates values ( EURO );    mit;    update rates set rate = ;    mit;    update rates set rate = ;    mit;    delete rates;    mit;    insert into rates values ( EURO );    mit;    update rates set rate = ;    mit;

  在进行了这一系列操作后 DBA 将通过以下命令获得 RATE 列的当前提交值

  SQL> select * from rates;

  CURR       RATE        EURO    

  此输出显示 RATE 的当前值 没有显示从第一次创建该行以来发生的所有变更 这时使用闪回查询 您可以找出给定时间点的值 但我们对构建变更的审计线索更感兴趣 ― 有些类似于通过便携式摄像机来记录变更 而不只是在特定点拍摄一系列快照

  以下查询显示了对表所做的更改

  select versions_starttime versions_endtime versions_xid     versions_operation rate    from rates versions beeen timestamp minvalue and maxvalue    order by VERSIONS_STARTTIME    /

  VERSIONS_STARTTIME     VERSIONS_ENDTIME       VERSIONS_XID     V       RATE        DEC PM  DEC PM  C I         DEC PM  DEC PM  A A U         DEC PM  DEC PM  A B U         DEC PM                         A C D         DEC PM  DEC PM  A D I         DEC PM                         A E U    

  注意 此处显示了对该行所作的所有更改 甚至包括该行被删除和重新插入的情况 VERSION_OPERATION 列显示对该行执行了什么操作 (Insert/Update/Delete) 所做的这些工作不需要历史表或额外的列

  在上述查询中 列 versions_starttime versions_endtime versions_xid versions_operation 是伪列 与 ROWNUM LEVEL 等其他熟悉的伪列相类似 其他伪列 ― 如 VERSIONS_STARTSCN 和 VERSIONS_ENDSCN ― 显示了该时刻的系统更改号 列 versions_xid 显示了更改该行的事务标识符 有关该事务的更多详细信息可在视图 FLASHBACK_TRANSACTION_QUERY 中找到 其中列 XID 显示事务 id 例如 使用上述的 VERSIONS_XID 值 A D UNDO_SQL 值显示了实际的语句

  SELECT UNDO_SQL    FROM FLASHBACK_TRANSACTION_QUERY    WHERE XID = A D ;

  UNDO_SQL        insert into ANANDA RATES ( CURRENCY RATE ) values ( EURO );

  除了实际语句之外 该视图还显示提交操作的时间标记和 SCN 查询开始时的 SCN 和时间标记以及其他信息

  找出一段时期中的变更

  现在 让我们来看如何有效地使用这些信息 假设我们需要找出下午 : : 时 RATE 列的值 我们可以执行

  select rate versions_starttime versions_endtime    from rates versions    beeen timestamp    to_date( / / : : mm/dd/yyyy hh :mi:ss )    and to_date( / / : : mm/dd/yyyy hh :mi:ss )    /

  RATE VERSIONS_STARTTIME     VERSIONS_ENDTIME           

  此查询与闪回查询类似 在以上的示例中 开始和结束时间为空 表示汇率在该时间段中没有更改 而是包含一个时间段 还可以使用 SCN 来找出过去的版本值 可以从伪列 VERSIONS_STARTSCN 和 VERSIONS_ENDSCN 中获得 SCN 号 以下是一个示例

  select rate versions_starttime versions_endtime    from rates versions    beeen scn and     /

  使用关键词 MINVALUE 和 MAXVALUE 可以显示还原段中提供的所有变更 您甚至可以提供一个特定的日期或 SCN 值作为范围的一个端点 而另一个端点是文字 MAXVALUE 或 MINVALUE 例如 以下查询提供那些只从下午 : : 开始的变更 而不是全部范围的变更

  select versions_starttime versions_endtime versions_xid     versions_operation rate    from rates versions beeen timestamp    to_date( / / : : mm/dd/yyyy hh :mi:ss )    and maxvalue    order by VERSIONS_STARTTIME    /

  VERSIONS_STARTTIME     VERSIONS_ENDTIME       VERSIONS_XID     V       RATE        DEC PM                         A C D         DEC PM  DEC PM  A D I         DEC PM                         A E U    

  最终的分析

  闪回版本查询随取随用地复制表变更的短期易变数值审计 这一优点使得 DBA 能够获得过去时间段中的所有变更而不是特定值 只要还原段中提供数据 就可以尽情使用 因此 最大的可用版本依赖于 UNDO_RETENTION 参数

cha138/Article/program/Oracle/201311/17217

相关参考

知识大全 Oracle10g回溯版本查询追踪行变化

Oracle10g回溯版本查询追踪行变化  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  故障检查

知识大全 Oracle10g学习之闪回数据库

Oracle10g学习之闪回数据库  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  目标  闪回数

知识大全 Oracle10G启用闪回功能

Oracle10G启用闪回功能  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  [oracle@l

知识大全 用Oracle闪回功能恢复偶然丢失的数据

用Oracle闪回功能恢复偶然丢失的数据  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  引言  

知识大全 Oracle10g数据库中闪回表特性剖析

Oracle10g数据库中闪回表特性剖析  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Orac

知识大全 基于hibernate的开源通用查询框架-bba96

  bba框架当前版本包含  bbacore核心框架封装HibernateCriteria提供方便的查询以及分页支持查询参数  bbastruts基于Struts的开发框架依赖core提供便捷的CRU

知识大全 心理咨询行业的公司想开通百度指数专业版本,请问一下多少钱

心理咨询行业的公司想开通百度指数专业版本,请问一下多少钱?请参阅::zhishu.baidu./更多问题,请到推广客户端帮助频道查询::yingxiao.baidu./support/editor/i

知识大全 小学二年级下册数学53天天练答案

小学二年级下册数学53天天练答案由于各省市采用的教材版本不同,出版社不同,所以不能提供您要的准确信息。请根据出版社和版本信息,前往书店或者正规的网站查询。或者请您上传题目,以方便网友解答!希望可以帮到

知识大全 苹果5代升级了7.0版本能还原成原来的版本吗

苹果5代升级了7.0版本能还原成原来的版本吗?不能!自IOS7发布以来苹果就已经停止除IOS7以外的版本可以理解为以前的版本停止全球的认证所以想要的升级的小伙伴们慎重!望采纳!IE升级了怎么还原成原来

知识大全 Java版本和C++版本简单Stack程序

Java版本和C++版本简单Stack程序  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  现在对