加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

如何找出上次更新Oracle表的时间

发布时间:2020-12-12 13:58:05 所属栏目:百科 来源:网络整理
导读:我可以找出在Oracle数据库的表上执行最后一个INSERT,UPDATE或DELETE语句的时间,如果是,怎么办? 一点背景:Oracle版本是10g。我有一个定期运行的批处理应用程序,从单个Oracle表读取数据并将其写入文件。如果数据自上次上班以来没有改变,我想跳过这个。
我可以找出在Oracle数据库的表上执行最后一个INSERT,UPDATE或DELETE语句的时间,如果是,怎么办?

一点背景:Oracle版本是10g。我有一个定期运行的批处理应用程序,从单个Oracle表读取数据并将其写入文件。如果数据自上次上班以来没有改变,我想跳过这个。

该应用程序以C编写,并通过OCI与Oracle进行通信。它使用“普通”用户登录到Oracle,因此我无法使用任何特殊的管理内容。

编辑:好的,“特别管理员”不是一个很好的描述。我的意思是:除了从表中选择并调用存储过程之外,我不能做任何事情。更改关于数据库本身的任何内容(如添加触发器),如果要在2010年之前完成,可能不是一个选择。

由于您是10g,您可以使用ORA_ROWSCN伪列。这会给你最后一个SCN(系统更改号)的上限,导致该行发生更改。由于这是一个增加的顺序,您可以存储您看到的最大ORA_ROWSCN,然后仅查找SCN大于该数据的数据。

默认情况下,ORA_ROWSCN实际上保持在块级别,所以更改块中的任何行将更改块中所有行的ORA_ROWSCN。如果我们正在谈论“正常”数据访问模式,如果意图最小化您处理多个行的行数,没有任何更改,这可能就足够了。您可以使用ROWDEPENDENCIES重建表,这将导致在行级别跟踪ORA_ROWSCN,从而为您提供更细化的信息,但需要一次性重建表。

另一个选择是配置诸如“变更数据捕获(CDC)”之类的东西,并使您的OCI应用成为用户对表的更改,但这也需要一次性配置CDC。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读