У меня есть соединение Oracle с базой данных ORACLE 10.2 и я хочу прослушать изменения в таблице. Пользователю соединения была предоставлена привилегия «ИЗМЕНЕНИЕ ИЗМЕНЕНИЯ».
Прослушивание инициализируется следующим методом:
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:
После проверки списка устранения неполадок и определения того, что все в порядке, я подключился как Oracle к администратору базы данных и проверил IP-адреса, которые следует уведомлять при изменении (SELECT * FROM user_change_notification_regs). По какой-то причине IP-адреса указывали на виртуальный сетевой адаптер VMWare, хотя запрос на уведомление был инициирован с физической машины, а не с виртуальной машины. После отключения этого виртуального сетевого адаптера все работает как надо.