OracleDependency未触发事件

3

我有一个连接到ORACLE 10.2数据库的Oracle连接,并希望监听表格的更改。连接的用户被授予了“CHANGE NOTIFICATION”权限。

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

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从未被触发。我做错了什么?
更新:
在检查故障排除列表并发现一切正常后,我作为Oracle的DBA连接并检查了应在更改发生时通知的IP地址(SELECT * FROM user_change_notification_regs)。由于某种原因,IP地址指向了一个VMWare虚拟网络适配器,尽管通知请求是从物理机器而不是VM启动的。禁用该虚拟网络适配器后,一切都像应该的那样工作。

我正在使用一个Python程序遇到类似的问题。它之前能够正常工作,但是后来突然停止了。如果我找到了任何线索,我会更新答案的。 - Mark Harrison
2个回答

2
你是否已经查看了文档中的故障排除步骤?请按照文档中的步骤进行操作。

2
文档链接现在已失效。 - Thought

0

作为替代方案,您可以使用oracletabledependency组件。您可以在Tabledependency.codeplex.com上找到它。

一旦实例化,您将收到每个表记录修改的事件。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接