我有一个到 ORACLE 10.2 数据库的 Oracle 连接,并且想要监听对表的更改。连接的用户被授予“更改通知”权限。

使用以下方法初始化监听:

private OracleDependency SubscribeToTable(string tableName)
{
  string sql = "select * from " + tableName;
  var cmd = new OracleCommand(sql, this.connection) { AddRowid = true };
  var dep = new OracleDependency(cmd);
  cmd.Notification.IsNotifiedOnce = false;
  dep.OnChange += this.dep_OnChange;
  cmd.ExecuteNonQuery();
  return dep;
}

当我在观察表中插入一行并提交时,事件 dep_OnChange 永远不会被触发。我究竟做错了什么?

更新:

在检查故障排除列表并发现一切正常后,我以 DBA 的身份连接到 Oracle 并检查了发生更改时应通知的 IP 地址(SELECT * FROM user_change_notification_regs)。出于某种原因,IP 地址指向 VMWare 虚拟网络适配器,尽管通知请求是从物理机而不是 VM 发起的。禁用该虚拟网络适配器后,一切正常。

最佳答案

您是否遇到过 documentation 中的故障排除?

关于c# - OracleDependency 不触发事件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/790420/

10-16 09:55