gpt4 book ai didi

java - 使用ora_rowscn了解每个更改

转载 作者:行者123 更新时间:2023-12-01 13:52:57 25 4
gpt4 key购买 nike

我想使用我的 java 应用程序跟踪 oracle11g 中表上的所有更改。

我正在考虑像这样使用ora_rowscn:执行选择并每次获取更新的记录:

max = 0;

While(true){

ps = con.prepare statement("Select rowscn, * from t where ora_rowscn > ?");

ps.setInt(max);

max = calcMaxRowScn(ps.getResultSet());

}

calcMaxRowScn - 从结果集中返回最大 rowscn。

Oracle 文档状态:

“ORA_ROWSCN 返回该行最近更改的保守上限系统更改号 (SCN)”

所以:

  1. 使用 rowscn 字段安全吗?
  2. 我是否有可能错过一些更新?

最佳答案

您不应该错过任何更新(显然您会错过任何删除)。即使实际上没有进行任何更改,您也可能会看到行更改的 ORA_ROWSCN,特别是在未启用 ROWDEPENDENCIES 的情况下构建表时,因为默认情况下 SCN 存储在 block 级别而不是行级别。只要您的应用程序可以处理未更改的行,那就应该没问题。当然,由于 ORA_ROWSCN 没有索引,因此每次通过 Java 中的循环时都会对表进行全面扫描——这很容易导致速度相当慢,并给数据库带来相当大的负载。数据库服务器。

根据您想要实现的目标,可能有一个更简单的选择。例如,您可能想要使用类似 Continuous Query Notification 的内容。而不是自己动手。

关于java - 使用ora_rowscn了解每个更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19823423/

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