私は、DB変更通知を有効にしようとしているOracle DBの完全な初心者です。
private void RegisterNotification()
{
const string connstring = "Data Source=ORA_DB;User Id=USER;Password=pass;";
try
{
var connObj = new OracleConnection(connstring);
connObj.Open();
var cmdObj = connObj.CreateCommand();
cmdObj.CommandText = "SELECT * FROM MYTABLE";
var dep = new OracleDependency(cmdObj);
dep.QueryBasedNotification = false;
dep.OnChange += new OnChangeEventHandler(OnNotificationReceived);
cmdObj.ExecuteNonQuery();
connObj.Close();
connObj.Dispose();
connObj = null;
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
public static void OnNotificationReceived(object src, OracleNotificationEventArgs arg)
{
MessageBox.Show("Table has changed!");
}
「GRANT CHANGE NOTIFICATION TO USER;」を実行しました。しかし、手動でもプログラムでもテーブルデータを変更しても何も起こりません。クエリベースの通知も機能しません。私は、Oracle の設定で何かが欠けていると思います。
私は Oracle 11.2 標準版を持っています。