我正在尝试使用Oracle 数据库更改通知(DCN) 功能在我们的两个数据库之间执行数据复制。这个功能很棒,一切都很顺利,直到遇到障碍。
使用Java注册对象更改通知后,我开始接收数据库更改事件。对于已注册表上的任何DML操作,我会为每个修改的行获取 rowid 的列表。但是当更新的行数超过100时,Oracle不会发送所有 rowid 的更新;相反,它只发送一个警告,说明表中的所有行都已被修改(这是错误的)。原因是DCN的最大通知大小设置为1800字节。每个rowid的大小约为180字节。因此,100个rowid警报填充1800字节限制,下一个(第101个)警报使Oracle发送 ALL_ROWS已修改消息。
我发现的所有文档页面都提到了这个限制以及应用它的方案。但是没有提到如何增加这个限制。
我们有什么办法可以增加每个邮件限制的1800字节数?
答案 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