OracleDependency未触发事件

时间:2009-04-26 07:28:42

标签: c# oracle dependencies

我有一个到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永远不会被触发。我做错了什么?

更新:

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

2 个答案:

答案 0 :(得分:2)

您是否在documentation

中完成了故障排除

答案 1 :(得分:0)

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

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