C#使用OracleDependency不触发

1.Oracle服务器版本11.2.0.1

2.数据库用户赋值change notification权限。

需求对某个表的数据的变化情况进行监听,网上介绍说使用OracleDependency类,我照着做了,但是一直不触发,请问有没有做过的?是我哪里漏掉了吗?

图片说明
图片说明

首先,我们需要确认一下代码中使用的Oracle.DataAccess是否是最新的版本。其次,我们需要检查一下数据库的配置是否符合要求,例如DBMS_AQADM包是否已经授权给了当前用户。此外,我们还需要确保数据库中启用了Change Notification功能。

关于C#使用OracleDependency不触发的问题,还有以下一些可能的原因:

  1. 数据库的配置参数设置不正确。比如,MAX_DISPATCHERS和MAX_QUEUESIZE参数的值可能设置得不正确。
  2. 数据库已经在侦听请求,但是OracleDependency的实例已经被垃圾回收清除掉,因此无法收到通知。
  3. 数据库的缓存中可能还存在相同的查询语句,缓存中的结果可能会被返回,而不会触发实际的查询操作。
  4. C#代码中可能存在某些错误,比如事件处理器可能没有正确注册、可能因为多线程问题导致程序出现竞争条件等等。

在排查问题时,可以尝试使用SQL Trace功能来查看数据库与C#应用程序之间的通信,以便更准确地定位问题的根本原因。同时,也可以参阅一些官方文档与学习资源,例如Oracle官方文档、Stack Overflow等开源社区,以便更好地解决该问题。