我有一个到 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/