我有一個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