Я запускаю этот тест на компьютере 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 с использованием установщика, без каких-либо специальных настроек или настроек.
Спасибо, -- ДД
Обновление №1
Коллега успешно провел тот же тест, и он запустил его, используя предоставленную сервером oci.dll. Я пробовал это (я создавал с использованием Instantclient, но принудительно использовал PATH во время выполнения: Path=D:\oracle\product\11.2.0\dbhome_1\BIN;$(Path) на странице свойств VS> Отладка> Среда) , и действительно, тест CQN работает! Мы до сих пор не выяснили, является ли незначительная разница в версиях между клиентом и сервером или использование Instantclient (кстати, вариант Light) по сравнению с полным клиентом или установкой сервера настоящий виновник.
Но это плохая новость, что новый Instantclient не поддерживает CQN...
Обновление №2
Я попробовал все 6 комбинаций Instantclient Light (65 МБ) или Нормальный (150 МБ) в версиях 12.2.0.(1|2|3).0 на Win64, и ни один из них не работал. Полный клиент еще не тестировался, а также не тестировался на 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( &cqn_callback_func );
sub.set( OCI_SUBSCR_CQ_QOS_QUERY );
try {
sub.register_self();
} catch (const OracleException& ex) {
BOOST_REQUIRE(ex.error_code && *ex.error_code == 29972);
cerr
Подробнее здесь: https://stackoverflow.com/questions/149 ... -implictly