我有一个连接到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启动的。禁用该虚拟网络适配器后,一切都像应该的那样工作。