2009-04-26 199 views
3

我有一個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啓動的。禁用該虛擬網絡適配器後,所有操作都應如此。

+0

我有一個Python程序類似的問題。它工作了一段時間,然後停止工作。如果我找到任何線索,我會更新答案。 – 2009-04-27 06:55:08

回答

2

您是否遇到documentation的問題解答?

+2

文檔鏈接現在無效。 – Thought 2012-06-18 23:50:17

0

作爲替代方案,您可以使用oracletabledependency組件。你可以在 Tabledependency.codeplex.com

一旦實例化,你將接收事件fot修改每個表記錄。