1

我是尝试启用数据库更改通知的 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 标准版。

4

2 回答 2

1

CHANGE NOTIFICATION权限不适用于最新版本的标准版的功能 : 许可信息

Oracle TimesTen 应用层数据库缓存:

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

用于更改通知的接口事务日志 API (XLA)

多节点缓存网格

...

SE2:无

EE : Y(额外费用选项)

于 2019-08-02T06:21:49.073 回答
0

尝试在管理员权限下并作为控制台应用程序执行您的软件。当我们过去处理它时,我们面临着同样的事情。我们没有设法在网络服务中使用它。

于 2013-06-27T08:42:36.107 回答