Проблема с регистрацией CQN, сбрасываемой косвенно

Используя пользовательские оболочки C ++ OCI, я могу успешно зарегистрировать CQN C ++, основанную на обратном вызове, но похоже, что подписка сразу же отбрасывается, за моей спиной. Я не перезваниваю на простых DML. Если я пытаюсь отменить регистрацию той подписки, для которой register () работала просто отлично, я получаю ORA-29970: указанный идентификатор регистрации не существует.

Я запускаю этот тест на Win7 (64-битной) коробке, на которой запущен локальный сервер Oracle 11.2.0.1.0, и я подключаюсь к клиентскому приложению C ++, созданному для InstantClient-11.2.0.2.0, который работает на той же машине ,

  • Я пробовал настройку OCI_ATTR_SUBSCR_TIMEOUT явно до 0, но безрезультатно.
  • Я проверил job_queue_processes экземпляр экземпляра, чтобы убедиться, что это не 0 (это 1000).
  • Конечно, пользователь / схема, с которой я соединяюсь, была предоставлена ИЗМЕНЕНИЕ УВЕДОМЛЕНИЯ

У меня заканчиваются идеи по этому вопросу, и я был бы признателен за некоторые идеи о том, что еще я мог бы попробовать или проверить.

Я начинаю задаваться вопросом, должен ли CQN быть активированный как-то. Мои навыки администратора практически отсутствуют, это стандартная установка 11gR1 на Windows с использованием установщика, без каких-либо специальных настроек или настроек.

Спасибо, —DD

Обновление № 1

Коллега успешно выполнил тот же тест, и он запустил его, используя предоставленный сервером файл oci.dll. Я попытался это (я строю с использованием InstantClient, но принудительно PATH во время выполнения: Path=D:\oracle\product\11.2.0\dbhome_1\BIN;$(Path) в VS Property Page> Отладка> Окружающая среда), и действительно, тест CQN работает! Мы до сих пор не выяснили, небольшая разница в версии между клиентом и сервером, или используя InstantClient ( Свет Вариант, кстати) против полного клиента против установки сервера является реальным виновником.

Но это плохие новости более новый InstantClient не поддерживает CQN …

Обновление № 2

Я перепробовал все 6 комбинаций InstantClient Свет (65 МБ) или Нормальный (150 МБ) в версиях 12.2.0. (1 | 2 | 3) .0 на Win64, и ни одна из них не работала. Мы еще не тестировали Full Client, и мы еще не тестировали Linux.

Environment_var cqn_env = Environment::create(OCI_EVENTS + OCI_OBJECT);
Connection_var cqn_conn = Connection::logon2(...);
Subscription sub(cqn_conn, "cqn_test", OCI_SUBSCR_NAMESPACE_DBCHANGE);
sub.set<attr::SUBSCR_CALLBACK>( &cqn_callback_func );
sub.set<attr::SUBSCR_CQ_QOSFLAGS>( OCI_SUBSCR_CQ_QOS_QUERY );

try {
sub.register_self();
} catch (const OracleException& ex) {
BOOST_REQUIRE(ex.error_code && *ex.error_code == 29972);
cerr << "\nSKIPPED: test requires CHANGE NOTIFICATION privilege" << endl;
return;
}

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]