oracle - Oracle 更改通知注册未在 Oracle 18c 上清理
问题描述
我正在将devart dotConnect for Oracle与 Oracle 12c 数据库一起使用。我的应用程序有一个OracleDependency
实例化的对象,用于在我更改表时读取通知。
它适用于 Oracle 12C。最近,我使用 Oracle 18c 创建了一个新实例。我意识到通知延迟到达我的应用程序,有时它会被错过。
我试图深入挖掘并找到问题所在。我发现那张桌子USER_CHANGE_NOTIFICATION_REGS
SELECT * from USER_CHANGE_NOTIFICATION_REGS
显示已注册的旧通知。当我停止并从 IIS 启动我的 Web 应用程序时,它似乎没有被清除。
我尝试使用 手动清理这些通知DBMS_CHANGE_NOTIFICATION.DEREGISTER
,但它不起作用,因为是使用不同的会话创建的。几个小时后,当该列表自行清理时,我的应用程序才重新开始工作。
我想知道 Oracle 18c 中是否有一些新的参数/设置来定义某种超时。我是否应该更改我的应用程序中的某些内容以在停止之前清除已注册的通知?
下图中的那些记录是旧的。我怀疑延迟发送新通知是因为它试图从注册的旧通知中调用回调函数 (IP:Port)。当该列表被清除(我不知道它自己是如何清除的)时,应用程序会再次运行。
图片:
解决方案
尝试降低 command.Notification.Timeout 的值。
如果这没有帮助,请执行以下操作:
1)向我们发送一个完整的小测试项目,用于使用相应的 DDL/DML 脚本进行复制
2) 告诉我们您的 Oracle Server 18c 和 Oracle 客户端的确切版本
推荐阅读
- svg - 如何将地理参考 SVG 放置在 openlayers 地图上(不是图像)
- c++ - 坚持在 C++ 中调用一些方法来创建菜单
- python - 如何在python中使用乌龟画一个圆?
- javascript - 无法使用 jquery ajax 和 codeigniter 分页在页面上显示搜索结果
- javascript - 计算 Javascript 数组的多级小计
- python - SQLalchemy .filter 不能按预期工作
- python - 将 15 小时长的音频文件拆分为 1 小时长的文件
- php - 如何在 PHP 中使用 Android Jetpack Paging 3
- python - 带有标准分隔符的 MathJax 内联公式未使用 wkhtmltopdf 正确呈现
- javascript - 用于表单验证的 Javascript 循环数组