OracleDependency не запускает событие - PullRequest
3 голосов
/ 26 апреля 2009

У меня есть соединение 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, хотя запрос на уведомление был инициирован с физической машины, а не с виртуальной машины. После отключения этого виртуального сетевого адаптера все работает как надо.

Ответы [ 2 ]

2 голосов
/ 27 апреля 2009

Вы пробежали через устранение неисправностей в документации ?

0 голосов
/ 09 сентября 2015

В качестве альтернативы вы можете использовать компонент oracletabledependency. Вы можете найти его на Tabledependency.codeplex.com

После создания вы будете получать события для каждой измененной записи таблицы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...