Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用ora_rowscn了解每个更改_Java_Sql_Oracle_Oracle11g - Fatal编程技术网

Java 使用ora_rowscn了解每个更改

Java 使用ora_rowscn了解每个更改,java,sql,oracle,oracle11g,Java,Sql,Oracle,Oracle11g,我想使用java应用程序跟踪oracle11g中表上的所有更改 我正在考虑像这样使用ora_rowscn:执行选择,每次都获取更多最新记录: max=0; While(true){ ps=con.prepare语句(“选择rowscn,*from t where ora_rowscn>?”; ps.setInt(最大值); max=calcMaxRowScn(ps.getResultSet()); } calcMaxRowScn-从结果集中返回最大rowscn Oracle文档状态: “ORA

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

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

max=0;
While(true){
ps=con.prepare语句(“选择rowscn,*from t where ora_rowscn>?”;
ps.setInt(最大值);
max=calcMaxRowScn(ps.getResultSet());
}
calcMaxRowScn
-从结果集中返回最大rowscn

Oracle文档状态:

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

因此:

  • 使用rowscn字段是否安全
  • 我可能会错过一些更新吗

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

    根据您试图实现的目标,可能有一个更简单的选择。例如,您可能希望使用类似的内容,而不是自己滚动