Непрерывное уведомление о запросе автоматически отменяется - PullRequest
2 голосов
/ 08 марта 2012

Я работаю с Oracle и ODP.Net и регистрирую некоторые непрерывные уведомления о запросах.

Все работало нормально, пока база данных не была обновлена ​​до 11.2.0.3 - теперь я вижу, что мои запросы регистрируются и отменяются через несколько секунд. Код выглядит так:

        OracleCommand cmd = new OracleCommand();
        cmd.Connection = getOpenConnection();
        cmd.CommandText = _sqlStatement;

        _odep = new OracleDependency(cmd, false, 0, false);

        _odep.OnChange += new OnChangeEventHandler(_odep_OnChange);

        OracleDB.bindVars(ref cmd, arguments);

        cmd.Notification.IsNotifiedOnce = false;
        cmd.ExecuteNonQuery();

Есть ли где-нибудь журнал регистрации CQN в базе данных?

Edit: getOpenConnection () - это просто функция, которая возвращает открытое соединение, тогда как OracleDB.bindVars просто связывает существующие переменные связывания с командой Акцент на то, что до обновления БД все работало нормально:)

Ответы [ 3 ]

2 голосов
/ 16 марта 2012

Это может не относиться к вашему конкретному сценарию, но любой, у кого возникли проблемы с уведомлениями CQN (и AQ), не должен обновлять базу данных.В базе данных 11.2.0.1 произошла ошибка.

Следующий SQL заставляет Oracle избегать пути с ошибочным кодом в более старой версии, но рекомендуется обновить базу данных:

изменить системный наборсобытия '10867 контекст имени трассы навсегда, уровень 1';

РЕДАКТИРОВАТЬ: обратите внимание, что это старая ошибка, и проблема исправлена ​​в текущих наборах патчей.Вам нужно будет исправить обе базы данных и ODP.NET, чтобы исправить это.

Кристиан Шей

Oracle

2 голосов
/ 15 марта 2012

В конце концов, это была проблема со стороны базы данных - несовместимость, вызванная регистрацией записей CQN с использованием клиента 11.2.0.1 на сервере 11.2.0.3.

1 голос
/ 26 июня 2012

+ 1 для ответа Кристиана (у меня нет представителя для +1)

Его исправление (изменение системного набора событий '10867 контекст имени трассы навсегда, уровень 1') решило проблему обратного вызовасобытия не стреляют.

До тех пор, пока это исправление не будет применено, я бы увидел, как регистрация уведомления об изменениях входит в таблицу USER_CHANGE_NOTIFICATION_REGS и исчезает при изменении БД, но событие не запускается.

Я использую 11.2.0.1Сервер .0 и клиент 11.2.0.3.0 (http://www.oracle.com/technetwork/database/windows/downloads/index-090165.html).

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