|
|
|
Continuous Query Notification (CQN)
|
|||
|---|---|---|---|
|
#18+
День добрый! Работал ли кто либо с данной фичей от Oralce? http://docs.oracle.com/cd/E11882_01/appdev.112/e25518/adfns_cqn.htm#BDCGGACA Есть несколько вопросов: мониторинг процессов, залипание нотификации, удаления сообщений в статусе EXPIRED да и в целом управлением сей очередью (оно же ведь через нее родимую работает), ибо в доке шаром покати ((. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2013, 14:09 |
|
||
|
Continuous Query Notification (CQN)
|
|||
|---|---|---|---|
|
#18+
Обновим тему. Пробовал в тестовом стенде, вещь довольно интересная, работает скорострельно...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) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2015, 14:04 |
|
||
|
Continuous Query Notification (CQN)
|
|||
|---|---|---|---|
|
#18+
Есть несколько вопросов: мониторинг процессов, залипание нотификации, удаления сообщений в статусе EXPIRED да и в целом управлением сей очередью (оно же ведь через нее родимую работает), ибо в доке шаром покати ((. ______________________ aliiii ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2015, 12:57 |
|
||
|
Continuous Query Notification (CQN)
|
|||
|---|---|---|---|
|
#18+
Ничем от обычного мониторинга aq очередей не отличиается, SYS.AQ_SRVNTFN_TABLE смотрим, мониторим соответствующую очередь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2015, 16:15 |
|
||
|
Continuous Query Notification (CQN)
|
|||
|---|---|---|---|
|
#18+
"Залипания", остановка вызовов callback, отрезание тела сообщения до 8к :) ... и другие приключения пользователей глючного и недоделанного АQ лечится изучением соответствующих нот в металинке, пока не надоест...потом просто берется за аксиому, что в oracle безотказно работает только традиционный sql...и пишется все необходимое через иные продукты :) а ораклу остается, то ради чего он и сделан как база данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2015, 16:20 |
|
||
|
Continuous Query Notification (CQN)
|
|||
|---|---|---|---|
|
#18+
В тему глюков CQN, т.к. инфы по этой теме маловато. Код: plsql 1. 2. На 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. Потом DROP и CREATE cqn_handler. Результат : движок CQN ожил, handler стал получать уведомления...НО с кривыми REGISTRATION_ID! При регистрации запросов (как в примере) DBMS_CQ_NOTIFICATION.new_reg_start(reginfo) возвращает очередной REGISTRATION_ID, он запоминается в таблице приложения. Инфа в dba_cq_notification_queries соответствует регистрации Код: plsql 1. А вот cqn_handler получает: ** в ntfnds.registration_id числа с отставанием от зарегистрированных на первом шаге ** в ntfnds.query_desc_array(i).queryid данные корректные, соответствуют регистрации Если у кого-то был такой "перекос", подскажите, как его ликвидировать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2017, 17:19 |
|
||
|
Continuous Query Notification (CQN)
|
|||
|---|---|---|---|
|
#18+
Vladimir Filin... соответственно, лечим, как (не)понимаем. После рестарта инстанса проблема пять вернулась в исходное состояние: handler не вызывается. Код: plsql 1. 2. 3. показывают, что подписки есть, запросы зарегистрированы, всё выглядит замечательно!....но, не работает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2017, 20:38 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=38944587&tid=1884772]: |
0ms |
get settings: |
6ms |
get forum list: |
12ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
34ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
55ms |
get tp. blocked users: |
2ms |
| others: | 265ms |
| total: | 391ms |

| 0 / 0 |
