OracleDatabase10g:闪回版本查询

OracleDatabase10g:闪回版本查询,第1张

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

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

查询对表的更改

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

SQL> desc rates    Name              NullType        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 参数

lishixinzhi/Article/program/Oracle/201311/17217

1、SELECTvalue$FROMsysprops$WHEREname='NLS_CHARACTERSET';

--查询oracle相关参数

2、SELECTFROMNLS_DATABASE_PARAMETERS;

扩展资料:

OracleDatabase,又名OracleRDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。

可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。它是一种高效率、可靠性好的适应高吞吐量的数据库解决方案。

ORACLE数据库系统是美国ORACLE公司(甲骨文)提供的以分布式数据库为核心的一组软件产品,是目前最流行的客户/服务器(CLIENT/SERVER)或B/S体系结构的数据库之一。

比如SilverStream就是基于数据库的一种中间件。ORACLE数据库是目前世界上使用最为广泛的数据库管理系统,作为一个通用的数据库系统,它具有完整的数据管理功能;作为一个关系数据库,它是一个完备关系的产品;作为分布式数据库它实现了分布式处理功能。

但它的所有知识,只要在一种机型上学习了ORACLE知识,便能在各种类型的机器上使用它。

Oracle数据库最新版本为OracleDatabase12c。Oracle数据库12c 引入了一个新的多承租方架构,使用该架构可轻松部署和管理数据库云。

此外,一些创新特性可最大限度地提高资源使用率和灵活性,如OracleMultitenant可快速整合多个数据库,而AutomaticDataOptimization和HeatMap能以更高的密度压缩数据和对数据分层。

这些独一无二的技术进步再加上在可用性、安全性和大数据支持方面的主要增强,使得Oracle数据库12c 成为私有云和公有云部署的理想平台。

参考资料:

Oracle数据库--百度百科

通过命令来查看,如用户权限,表名,存储位置,版本等等。

选中树形目录中监听程序项,再点击左上侧“+”按钮添加监听程序,点击监听程序目录,默认新加的监听器名称是LISTENER,该名称也可以 由任意合法字符命名,选中该名称,选中窗口右侧栏下拉选项中的“监听位置”,点击添加地址按钮。

选中窗口右侧栏下拉选项中的“数据库服务”,点击添加数据库按钮,在出现的数据库栏中输入全局数据库名,如myoracle,注意这里的全局数据库名与数据库SID有所区别,全局数据库名实际通过域名来控制在同一网段内数据库全局命名的唯一性,就如Windows下的域名控制器,如这里可以输入 myoracle19216815。

如果客户端需要连接数据库服务器进行 *** 作,则需要配置该客户端,其依附对象可以是任意一台欲连接数据库服务器进行 *** 作的pc机,也可以是数据库服务器自身。

以上就是关于OracleDatabase10g:闪回版本查询全部的内容,包括:OracleDatabase10g:闪回版本查询、如何查看Oracle数据库的字符编码、如何查看oracle数据库配置参数等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9812664.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存