2009-04-26 28 views
3

ORACLE 10.2データベースへのOracle接続があり、テーブルの変更をリスンする必要があります。接続のユーザーには特権 "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; 
} 

、イベントdep_OnChangeが解雇されることはありません。何が間違っているのですか?

UPDATE:すべてがOKであることが判明

トラブルシューティングのリストをチェックした後と、私は、OracleのDBAとして接続し、変更が発生したとき(USER_CHANGE_NOTIFICATION_REGS * FROMをSELECT)に通知しなければならない、そのIP住所がチェック。何らかの理由で、IPアドレスがVMWare仮想ネットワークアダプタを指していましたが、通知要求はVMではなく物理マシンから開始されました。その仮想ネットワークアダプタを無効にした後は、すべてが正常に動作するように動作します。

+0

私はPythonプログラムで同様の問題を抱えています。それはしばらくの間働いて、次に動作を停止しました。私は手がかりを見つけたら答えを更新します。 –

答えて

2

documentationでトラブルシューティングを実行しましたか?

+2

文書リンクが無効になりました。 – Thought

0

代替案として、oracletabledependencyコンポーネントを使用できます。 で見つけることができますTabledependency.codeplex.com

一度インスタンス化すると、すべてのテーブルレコードが変更されたイベントが受信されます。

関連する問題