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

时间:2017-06-22 08:13:27

标签: java oracle

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

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

我发现的所有文档页面都提到了这个限制以及应用它的方案。但是没有提到如何增加这个限制。

我们有什么办法可以增加每个邮件限制的1800字节数?

1 个答案:

答案 0 :(得分:0)

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

DBMS_CQ_NOTIFICATION.SET_ROWID_THRESHOLD (  
  tbname     IN  VARCHAR2,
  threshold  IN  NUMBER);

注册听众后,请调用此过程。此功能记录在此处: https://docs.oracle.com/database/121/ARPLS/d_cqnotif.htm#ARPLS65668