gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 10:44:07 26 4
gpt4 key购买 nike

我可以找出对Oracle数据库中的表执行最后一条INSERT,UPDATE或DELETE语句的时间吗?

背景知识:Oracle版本为10g。我有一个定期运行的批处理应用程序,可从单个Oracle表读取数据并将其写入文件。如果自上次运行作业以来数据未更改,我想跳过此步骤。

该应用程序用C++编写,并通过OCI与Oracle通信。它以“普通”用户身份登录到Oracle,因此我不能使用任何特殊的管理员内容。

编辑:好的,“Special Admin Stuff”并不是一个很好的描述。我的意思是:除了从表中选择和调用存储过程外,我什么也不能做。如果想在2010年之前完成更改数据库本身的任何事情(如添加触发器),则很遗憾。

最佳答案

由于您的体重是10克,因此有可能使用ORA_ROWSCN伪列。这样,您就可以得出导致该行发生更改的最后一个SCN(系统更改号)的上限。由于这是一个递增的序列,因此您可以存储已看到的最大ORA_ROWSCN,然后仅查找SCN大于该值的数据。

默认情况下,ORA_ROWSCN实际上保持在块级别,因此更改块中的任何行都会更改该块中所有行的ORA_ROWSCN。如果要在不考虑“正常”数据访问模式的情况下将多次处理的行数减至最少,而无需进行更改,那么这可能就足够了。您可以使用ROWDEPENDENCIES重建表,这将导致在行级别跟踪ORA_ROWSCN,这为您提供了更详尽的信息,但需要一次性的精力来重建表。

另一种选择是配置诸如更改数据捕获(CDC)之类的内容,并使OCI应用程序成为对表进行更改的订阅者,但这还需要一次性的精力来配置CDC。

关于oracle - 如何找出上次更新Oracle表的时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/265122/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com