我有一个Oracle连接到ORACLE 10.2数据库,并且想要监听对表的更改。连接的用户被授予了“CHANGE NOTIFICATION”的权限。OracleDependency没有触发事件
听力被初始化为以下的方法:
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;
}
在i行插入观察到的表并提交,dep_OnChange永远不会触发事件。我究竟做错了什么?
UPDATE:
后检查故障列表,发现一切会好的,我连为DBA对Oracle和检查的IP不会忽略在发生变化时应当通知(SELECT * FROM user_change_notification_regs)。由于某些原因,这些IP地址指向了VMWare虚拟网络适配器,尽管通知请求是从物理机器启动的,而不是VM启动的。禁用该虚拟网络适配器后,所有操作都应如此。
我有一个Python程序类似的问题。它工作了一段时间,然后停止工作。如果我找到任何线索,我会更新答案。 – 2009-04-27 06:55:08