Oracle变更通知注册未在Oracle 18c上清除

问题描述 投票:0回答:2

我正在将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)。当该列表被清除时(我不知道如何单独清除它),然后该应用程序再次工作。

图像:

https://i.stack.imgur.com/kAlNl.png

oracle notifications devart oracle18c
2个回答
0
投票

尝试减小command.Notification.Timeout的值。

如果这没有帮助,请执行:

1] send us一个小的完整测试项目,用于使用相应的DDL / DML脚本进行再现

2)告诉我们您的Oracle Server 18c和Oracle Client的确切版本


0
投票

已解决!问题是Windows防火墙。我使用Oracle 12c进行了测试,但遇到了同样的问题。然后,我只是关闭Windows防火墙,并且先前创建的更改通知已从DBA_Change_Notification_Regs表中删除。

可能由另一个应用程序/服务负责,并且被防火墙阻止。我想知道它使用哪个应用程序或哪个端口号。

© www.soinside.com 2019 - 2024. All rights reserved.