我是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标准版。
答案 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(额外费用选项)