OracleDependency не запускает событие

3

У меня есть соединение 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:

После проверки списка устранения неполадок и поиска все в порядке, я подключился как DBA к Oracle и проверил ip-адреса, которые должны быть уведомлены при изменении (SELECT * FROM user_change_notification_regs). По некоторым причинам IP-адреса указывали на виртуальный сетевой адаптер VMWare, хотя запрос уведомления был инициирован с физической машины, а не с виртуальной машины. После отключения этого виртуального сетевого адаптера все работает так, как должно.

  • 0
    У меня похожая проблема с программой на Python. Это работало некоторое время, а затем перестало работать. Я буду обновлять с ответом, если я найду какие-либо подсказки.
Теги:
dependencies

2 ответа

2
Лучший ответ

Пропустили ли вы проблему в документации?

  • 2
    Ссылка на документацию теперь недействительна.
0

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

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню