使用ODP.NET的Oracle数据库更改通知不起作用

时间:2013-06-27 07:18:30

标签: oracle odp.net

我是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!");
    }

我执行了“向用户发出更改通知”;但是,当我既不手动也不以编程方式更改表数据时,没有任何反应。基于查询的通知也不起作用。我想我错过了Oracle配置中的一些东西。

我有Oracle 11.2标准版。

2 个答案:

答案 0 :(得分:0)

尝试执行soft under admin权限并作为控制台应用程序。当我们过去处理它时,我们面对同样的东西。我们没有设法在网络服务中使用它。

答案 1 :(得分:0)

对于最新版本,标准版的功能没有CHANGE NOTIFICATION权限: Licensing information

  

Oracle TimesTen应用层数据库缓存:

     

使用PL / SQL,JDBC,ODBC,ttClasses,OCI和Pro * C / C ++进行数据访问

     

接口事务日志API(XLA)进行更改通知

     

多节点缓存网格

     

...

SE2:否

EE:Y(额外费用选项)