Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/330.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 Oracle数据库更改通知和1800字节/100行限制_Java_Oracle - Fatal编程技术网

Java Oracle数据库更改通知和1800字节/100行限制

Java Oracle数据库更改通知和1800字节/100行限制,java,oracle,Java,Oracle,我正在尝试使用Oracle数据库更改通知(DCN)功能在我们的两个数据库之间执行数据复制。这个功能非常棒,一切都很顺利,直到我遇到了障碍 使用Java注册对象更改通知后,我开始接收DB更改事件。对于注册表上的任何DML操作,我都会为每一个修改的行获取一个rowid列表。但是当更新的行数超过100时,Oracle不会发送所有更新的rowid;相反,它只发送一个警报,说明表中的所有行都已修改(这是错误的)。原因是DCN通知的最大大小设置为1800字节。每个rowid的大小约为180字节。因此,100

我正在尝试使用Oracle数据库更改通知(DCN)功能在我们的两个数据库之间执行数据复制。这个功能非常棒,一切都很顺利,直到我遇到了障碍

使用Java注册对象更改通知后,我开始接收DB更改事件。对于注册表上的任何DML操作,我都会为每一个修改的行获取一个rowid列表。但是当更新的行数超过100时,Oracle不会发送所有更新的rowid;相反,它只发送一个警报,说明表中的所有行都已修改(这是错误的)。原因是DCN通知的最大大小设置为1800字节。每个rowid的大小约为180字节。因此,100个rowid警报将填满1800字节的限制,下一个(第101个)警报将导致Oracle发送一条“所有行都已修改”消息

我找到的所有文档页面都提到了这个限制以及应用它的场景。但没有提到如何提高这一限制


有什么方法可以增加每条消息1800字节的限制吗?

Oracle支持部门建议使用以下方法来增加行限制。调用以下存储过程:

DBMS_CQ_NOTIFICATION.SET_ROWID_THRESHOLD (  
  tbname     IN  VARCHAR2,
  threshold  IN  NUMBER);
注册侦听器后调用此过程。此处记录了此功能:

恐怕您必须在Oracle支持站点上打开服务请求。好的,我会这样做。非常感谢。@DaSarfyCode是通过增加阈值来解决的。我确实增加了,但是插入的rowid仍然没有生成。