powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Continuous Query Notification (CQN)
7 сообщений из 7, страница 1 из 1
Continuous Query Notification (CQN)
    #38373295
huliGUN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
День добрый!
Работал ли кто либо с данной фичей от Oralce?

http://docs.oracle.com/cd/E11882_01/appdev.112/e25518/adfns_cqn.htm#BDCGGACA

Есть несколько вопросов: мониторинг процессов, залипание нотификации, удаления сообщений в статусе EXPIRED да и в целом управлением сей очередью (оно же ведь через нее родимую работает), ибо в доке шаром покати ((.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Continuous Query Notification (CQN)
    #38944587
Обновим тему. Пробовал в тестовом стенде, вещь довольно интересная, работает скорострельно...reliable режим проблемный - залипает, не для длинных изменений; best effort - вполне рабочий, работает как часы. НО!!! ВНИМАНИЕ!!! имеет ряд нерешенных багов 11.1 (личный опыт), 11.2 (металинк), 12с - свежее сообщение о баге 20 апреля 2015. Суть бага: допустим зарегистрировали запрос аля select * from table под callback. Добавляем столбец в таблицу и/или меняем триггер содержащий новый столбец делаем изменение таблице в другой сесии...получаем fatal и instance terminated, мгновение и все! :) Опыт был на продакшене...очень неприятно, хотя на тесте до этого (без внесения изменений проработало как часы более месяца). Если регистрировать у указанием конкретных столбцов, такого не происходит, Но есть неприятные вещи когда столбец удаляешь (вылезло в тесте). Больше 80 строчек при изменении в таблице rowid не возвращает, иногда меньше иногда больше...на усмотрение oracle :) (обожаю индусов!) При изменении строк зарегистрированного запроса(таблицы) больше 80 штук...выдает отдельный тип сообщения - удобно, delete rowid не возвращает :) ибо его уже нет...только event.
Резюме: если не трогать зарегистрированные столбцы в запросе - проблем нет, если такое нужно делать - дерегистриуем запрос на cqn, добавляем столбцы,триггеры, потом снова регистрируем, иначе есть шансы получить fatal.
Перед "опытами" читаем metalink.
1. 03-Aug-2014 Memory Corruption Errors (e.g. ORA-00600 [17182]/[17147]/[17114] etc.) from Java Clients Using Query Change Notification(Doc ID 1673541.1)
2. 22-Jan-2015 ORA-603, ORA-600 [17147](Bug ID 16657717) PRODID-5 PORTID-226 ORA-600 13950344 Abstract: ORA-603, ORA-600
3. 20-Apr-2015 ORA-600 [KGHFRH:DS], [0X7F4BACB6D030](Bug ID 20687562) Bug Number Score 13950344 48 (maximum 175)
11-Jun-2014 INSTANCE TERMINATED AFTER ORA-600 [17182] AND ORA-00600 [17147](Bug ID 18816973)
...
Рейтинг: 0 / 0
Continuous Query Notification (CQN)
    #38946111
zeeshan002
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть несколько вопросов: мониторинг процессов, залипание нотификации, удаления сообщений в статусе EXPIRED да и в целом управлением сей очередью (оно же ведь через нее родимую работает), ибо в доке шаром покати ((.

______________________
aliiii
...
Рейтинг: 0 / 0
Continuous Query Notification (CQN)
    #38946366
Ничем от обычного мониторинга aq очередей не отличиается, SYS.AQ_SRVNTFN_TABLE смотрим, мониторим соответствующую очередь.
...
Рейтинг: 0 / 0
Continuous Query Notification (CQN)
    #38946372
"Залипания", остановка вызовов callback, отрезание тела сообщения до 8к :) ... и другие приключения пользователей глючного и недоделанного АQ лечится изучением соответствующих нот в металинке, пока не надоест...потом просто берется за аксиому, что в oracle безотказно работает только традиционный sql...и пишется все необходимое через иные продукты :) а ораклу остается, то ради чего он и сделан как база данных.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Continuous Query Notification (CQN)
    #39566092
Фотография Vladimir Filin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В тему глюков CQN, т.к. инфы по этой теме маловато.
Код: plsql
1.
2.
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production (Non-CDB, разумеется)
CQN quality-of-service type: Query Result Change Notification (QRCN)


На development server-е развалил давно отлаженный и работающий захват уведомлений CQN.

Предполагаемые причины :
* проверял на примере dbms_photoshop-а 18413360 как DBMS_PARALLEL_EXECUTE реагирует на многократные ошибки при формировании заданий, например, если их вносить в l_chunk_sql и/или в l_sql . DBMS_PARALLEL_EXECUTE, с внесенными ошибками, запускался DBMS_SCHEDULER Job-ом.
* нагрузочный тест с DBMS_PARALLEL_EXECUTE без лимита ресурсов. EM зафиксировал ORA 700 [kskvmstatact: excessive swapping observed] и ORA-00700

Последствия были примерно следующие :
1. странное поведение копируемых и вновь создаваемых Job-ов -- они создавались, запускались и прекращали работу ничего не делая. Через несколько часов вылечилось само. А может и не вылечилось....
2. PL\SQL CQN handler перестал получать уведомления об изменении данных. Совсем. Подписки создаются, запросы регистрируются, данные меняются, handler ничего не получает. Само не вылечилось...

Лечение (пока не вылечили)
Доступа в MOS уже 2 года нет, соответственно, лечим, как (не)понимаем. Это не рекомендации!
1. рестарт инстанса -- не помогло
2. лечение "регистраций - неубиваемых призраков". Взято когда-то из Metalink-а:
The notifications can only be removed automatically by the database software itself once the notifications timeout. There is no way to remove notifications directly. They cannot be removed by another application or another session of the same application; lifting this restriction has been considered, but this would mean one application could delete another application's active notifications, which is not desirable.

If the notifications are building up due to repeated application crashes then they can be removed indirectly by revoking the change notification privilege from the user (database schema) to which the notifications belong, or by dropping the user from the database. Either of these operations will remove any change notifications owned by that user.

...Удаление регистраций возможно только после включения дебага:

event "10865 trace name context forever, level 1".

Выполнили от system:
Код: plsql
1.
2.
3.
REVOKE CHANGE NOTIFICATION FROM &&cqn_scheme;
ALTER SYSTEM SET EVENTS '10865 trace name context forever, level 1';
GRANT CHANGE NOTIFICATION TO &&cqn_scheme;


Потом DROP и CREATE cqn_handler.

Результат : движок CQN ожил, handler стал получать уведомления...НО с кривыми REGISTRATION_ID!
При регистрации запросов (как в примере) DBMS_CQ_NOTIFICATION.new_reg_start(reginfo) возвращает очередной REGISTRATION_ID, он запоминается в таблице приложения.

Инфа в dba_cq_notification_queries соответствует регистрации
Код: plsql
1.
SELECT   regid, queryid, TO_CHAR(querytext) FROM dba_cq_notification_queries ORDER BY regid DESC, queryid DESC;



А вот cqn_handler получает:
** в ntfnds.registration_id числа с отставанием от зарегистрированных на первом шаге
** в ntfnds.query_desc_array(i).queryid данные корректные, соответствуют регистрации

Если у кого-то был такой "перекос", подскажите, как его ликвидировать
...
Рейтинг: 0 / 0
Continuous Query Notification (CQN)
    #39566239
Фотография Vladimir Filin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vladimir Filin... соответственно, лечим, как (не)понимаем.

После рестарта инстанса проблема пять вернулась в исходное состояние: handler не вызывается.

Код: plsql
1.
2.
3.
SELECT * FROM dba_subscr_registrations ORDER BY reg_id DESC;
SELECT * FROM dba_change_notification_regs ORDER BY regid DESC;
SELECT   regid, queryid, TO_CHAR(querytext) FROM dba_cq_notification_queries ORDER BY regid DESC, queryid DESC;


показывают, что подписки есть, запросы зарегистрированы, всё выглядит замечательно!....но, не работает.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Continuous Query Notification (CQN)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]