powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Oracle QA чистка очереди.
37 сообщений из 37, показаны все 2 страниц
Oracle QA чистка очереди.
    #36674052
mgA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
mgA
Гость
Господа , подскажите пожалуйста !

Создал очередь, кладу в неё события с заданным свойством expiration равным 5 .
Всё прекрасно работает и события спустя 5 сек перестают быть видны для всех подписчиков.

Но, наблюдаю такое явление, если событие не было прочитано каким-то подписчиком, то оно хоть и становится недоступно спустя 5 сек, но тем не менее навсегда застревает в таблице очереди :(.

Вопрос, каким образом должна производится чистка данной таблицы очередей, вручную или для этого надо настроить какой-то оракловый процесс ( job) или что-то ещё ?
...
Рейтинг: 0 / 0
Oracle QA чистка очереди.
    #36674124
SQL*Plus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Какое значение установлено для параметра инициализации aq_tm_processes?
...
Рейтинг: 0 / 0
Oracle QA чистка очереди.
    #36674136
mgA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
mgA
Гость
SQL*PlusКакое значение установлено для параметра инициализации aq_tm_processes?
Специально никак не выставлял.
Его необходимо установить ?
...
Рейтинг: 0 / 0
Oracle QA чистка очереди.
    #36674173
SQL*Plus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Выполните
Код: plaintext
1.
SELECT * FROM v$version;
и покажите результат.
...
Рейтинг: 0 / 0
Oracle QA чистка очереди.
    #36680307
mgA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
mgA
Гость
Прошу прощение за паузу.

Вот результат от
select * from v$version
---------------------------------
Код: plaintext
1.
2.
3.
4.
Oracle Database 11g Enterprise Edition Release  11 . 1 . 0 . 6 . 0  - 64bit Production
PL/SQL Release  11 . 1 . 0 . 6 . 0  - Production
CORE	 11 . 1 . 0 . 6 . 0 	Production
TNS for Linux: Version  11 . 1 . 0 . 6 . 0  - Production
NLSRTL Version  11 . 1 . 0 . 6 . 0  - Production
----------------------------------
...
Рейтинг: 0 / 0
Oracle QA чистка очереди.
    #36680734
SQL*Plus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В Oracle11g (как и в 10g) параметр AQ_TM_PROCESSES выставлять не нужно.

Oracle® Database
Reference
11g Release 1 (11.1)AQ_TM_PROCESSES controls time monitoring on queue messages and controls
processing of messages with delay and expiration properties specified.You do not need
to specify a value for this parameter because Oracle Database automatically
determines the number of processes and autotunes them, as necessary. Therefore,
Oracle highly recommends that you leave the AQ_TM_PROCESSES parameter
unspecified and let the system autotune.
Поэтому я и спросил у вас версию...
...
Рейтинг: 0 / 0
Oracle QA чистка очереди.
    #36680942
SQL*Plus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Oracle® Streams
Advanced Queuing User's Guide
11g Release 1 (11.1)A message is considered PROCESSED only when all intended consumers have
successfully dequeued the message. A message is considered EXPIRED if one or more
consumers did not dequeue the message before the EXPIRATION time. When a
message has expired, it is moved to an exception queue.
Не переходят в exception queue?
...
Рейтинг: 0 / 0
Oracle QA чистка очереди.
    #36683292
mgA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
mgA
Гость
Очень странная ситуация ...
Если выполнить
select * from ALL_QUEUES
то видно что для моей очереди (имеющей тип NORMAL_QUEUE) ровно как и для очереди исключений (EXCEPTION_QUEUE) используется одна и та же таблица !

Но при создании очереди я не указывал какую использовать таблицу для EXCEPTION_QUEUE!

Теперь вопрос нужно ли мне указать таблицу для EXCEPTION_QUEUE и как я понимаю в неё попадут все записи expired но это означает что её тоже надо будет как-то чистить! Как чистить ?
...
Рейтинг: 0 / 0
Oracle QA чистка очереди.
    #36683367
aqcleaner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mgA,

Like any other queue, the exception queue must be enabled for dequeue using the DBMS_AQADM.START_QUEUE procedure.

и далее как обычно через dbms_aq.deque.
...
Рейтинг: 0 / 0
Oracle QA чистка очереди.
    #36683386
SQL*Plus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aqcleanerи далее как обычно через dbms_aq.deque.Не совсем, "как обычно"
Exception Queues
An exception queue is a repository for expired or unserviceable messages.
Applications cannot directly enqueue into exception queues. Also, a multiconsumer
exception queue cannot have subscribers associated with it. However, an application
that intends to handle these expired or unserviceable messages can dequeue them
exactly once from the exception queue using remove mode. The consumer name
specified while dequeuing should be null. Messages can also be dequeued from the
exception queue by specifying the message identifier.
...
Рейтинг: 0 / 0
Oracle QA чистка очереди.
    #36697931
mgA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
mgA
Гость
Т.е. я правильно понимаю что даже если мне эти сообщения не нужны то подругому от них избаиться, кроме как полуить, не получится ?
...
Рейтинг: 0 / 0
Oracle QA чистка очереди.
    #36698710
SQL*Plus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да,
an application that intends to handle these expired or unserviceable messages can dequeue them
exactly once from the exception queue using remove mode.
...
Рейтинг: 0 / 0
Oracle QA чистка очереди.
    #36699149
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не проще ли протухшие сообщения игнорировать (обрабатывать) на стороне получателя, чем откладывать всторону, а потом разбираться с ними отдельно.
...
Рейтинг: 0 / 0
Oracle QA чистка очереди.
    #36699174
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mcureenabНе проще ли протухшие сообщения игнорировать (обрабатывать) на стороне получателя
А с чего они "протухли"-то? Не с того ли, что получатель не смог их вовремя обработать?
Тогда логичный вопрос: а откуда уверенность , что получатель сможет обработать тухлятину?
...
Рейтинг: 0 / 0
Oracle QA чистка очереди.
    #36706225
mgA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
mgA
Гость
Спасибо всем кто ответил.

Тут просто проблема ещё и в том что получателей несколько, кому из них убирать устаревшие сообщения ?

Вообщем пришлось отправителю самому периодический получать все устаревшие сообщения.

Всё это как-то некрасиво что ли, почему бы всему что устарело не исчезнуть сразу после устаревания ?


И ещё походу пока реализовывал вот о чём подумал, а можно скажем не получая сообщейни из очереди просто стереть строки из таблицы очереди? В смысле не нарушит ли это какую-то целостность очереди ?
...
Рейтинг: 0 / 0
Oracle QA чистка очереди.
    #36706295
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mgAВ смысле не нарушит ли это какую-то целостность очереди ?
Это называется "SQL Approach" и, если не ошибаюсь , является документированным способом работы с очередью AQ - давно доку не перечитывал :)
...
Рейтинг: 0 / 0
Oracle QA чистка очереди.
    #36706466
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymousmcureenabНе проще ли протухшие сообщения игнорировать (обрабатывать) на стороне получателя
А с чего они "протухли"-то? Не с того ли, что получатель не смог их вовремя обработать?
Тогда логичный вопрос: а откуда уверенность , что получатель сможет обработать тухлятину?

А в чём проблема то? Получатель тянет сообщение, оно по сроку тухлое, получатель отправляет это сообщение ф топку.
Другое дело, что получатель вообще не читает сообщения...

Афтору следует подумать, а не сигнализирует ли образование тухляка о какой либо проблеме? Если так, то следует завести процесс-монитор, который будет читать очередь исключений и сигналить о проблеме. Надо заметить, что исключения могут возникать не только по таймауту но и по количеству попыток обработать сообщение.
...
Рейтинг: 0 / 0
Oracle QA чистка очереди.
    #36706480
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mcureenab
Другое дело, что получатель вообще не читает сообщения...
Афтору следует подумать, а не сигнализирует ли образование тухляка о какой либо проблеме?
Ну вот видишь, сам догадался :) :) :)
Еще один кейс - получатель не успевает обрабатывать поток сообщений, в этом случае доп. нагрузка в виде необходимости читать тухляк образует петлю положительной обратной связи с неизбежной остановкой сервиса.
...
Рейтинг: 0 / 0
Oracle QA чистка очереди.
    #36706500
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymousmgAВ смысле не нарушит ли это какую-то целостность очереди ?
Это называется "SQL Approach" и, если не ошибаюсь , является документированным способом работы с очередью AQ - давно доку не перечитывал :)

Наверное всётаки ошибаешься. Не видал я такой шняги. Хотя делать SQL запросы к представлениям над таблицей очереди можно и иногда полезно.

Вот нагугул такое письмо.
Delete-from-a-queue-table

PS. Как то раз удаляли криво созданную (через импорт) непомерно распухшую очередь. Скрипт надолго завис на операции dequeue. Вероятно, оракл таким образом чистил удаляемую очередь или подписчика. Проблему решили очисткой таблицы очереди посредством truncate table. После удаления таблицу и очереди создали заново. О каких либо проблемах с этой очередью я больше не слышал.
...
Рейтинг: 0 / 0
Oracle QA чистка очереди.
    #36706652
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymous
Еще один кейс - получатель не успевает обрабатывать поток сообщений, в этом случае доп. нагрузка в виде необходимости читать тухляк образует петлю положительной обратной связи с неизбежной остановкой сервиса.

Ok. Встречал такое, когда подписчик слишком долго лежал и не читал сообщения, чистка очереди заняла столько времени, что сервис был убит по таймауту.

Решение видится в том, чтобы во время простоя какой то другой сервис читал сообщения из шатной очереди или из очереди исключений (при использовании механизма протухания). Чисто технически проще читать очередь исключений, чем координировать процессы, читающие из одного подписчика.

Так чтобы получатель тратил заметное время на dequeue наблюдал только при использовании callback процедуры на очереди. Там запуск процесса в котором выполнялась callback процедура занимал много времени.

PS. Интересно, если при создании подписчика в rule указать что то типа "sysdate - 1 < msg_timestamp". Не будут ли такие сообщения удалены автоматически в процессе dequeue или даже асинхронно?
...
Рейтинг: 0 / 0
Oracle QA чистка очереди.
    #36706818
mgA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
mgA
Гость
mcureenab
Вот нагугул такое письмо.
Delete-from-a-queue-table


Жаль ссылка не открывается :( .
Всё же подводя итоги, получается что чистить таблицу очереди допустимо хоть и не совсем документировано, правильно?

Тогда, наверное проще будет под job посадить запрос на удаление устаревших сообщений чем читать всё что там набежало ( а набежит очень много, это у меня очередь которая следит за обновлением данных в большой таблице > 10млн. строк) .
...
Рейтинг: 0 / 0
Oracle QA чистка очереди.
    #36706839
mgA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
mgA
Гость
Когда подписчиков несколько (при этом в моём случае вполне нормально что часть из них временно отсутствует - они могут включиться в работу в любой момент) то избежать устаревших сообщений очень сложно. Особенно когда это различные процессы написанные на различных языках и работающие на различных машинах.

В текущей реализации у меня сам отправитель перед отправкой очередного сообщения читает "устаревший" мусор, затем только отправляет новые сообщения.

Решение мне кажется не совсем хорошим, потому что по наблюдениям иногда происходит задержка на вставку данных (триггер на вставку - он же кладёт новые сообщения в очередь и чистит предварительно мусор из очереди исключений), что иногда просто приводит к паузам до нескольких секунд.

Альтернативу я вижу только в отдельном job процессе который будет периодический читать мусор.
...
Рейтинг: 0 / 0
Oracle QA чистка очереди.
    #36707819
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mgA
Всё же подводя итоги, получается что чистить таблицу очереди допустимо хоть и не совсем документировано, правильно?


Я бы сказал, совсем недокументировано, на свой страх и риск.

Только вот не совсем понятно, зачем тебе очередь, если сообщения протухают в таком диком колличестве. ИМХО, тут что то типа сигналов (см. DBMS_ALERT) нужно делать.
...
Рейтинг: 0 / 0
Oracle QA чистка очереди.
    #36708510
mgA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
mgA
Гость
Понял, спасибо.

mcureenab
Только вот не совсем понятно, зачем тебе очередь, если сообщения протухают в таком диком колличестве. ИМХО, тут что то типа сигналов (см. DBMS_ALERT) нужно делать.
Да я бы с удовольствием применил DBMS_ALERT, но ведь как я понимаю он коммиты делает сам ?
А мне коммиты не хочется делать посреди своих транзакций, и уж тем более подвиснуть лишний раз в блокировке...
...
Рейтинг: 0 / 0
Oracle QA чистка очереди.
    #36708797
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dbms_alert -- Signal an alert.
-- Input parameters:
-- name
-- Name of the alert to signal. The effect of the signal call only
-- occurs when the transaction in which it is made commits. If the
-- transaction rolls back, then the effect of the signal call is as
-- if it had never occurred.
...
Рейтинг: 0 / 0
Oracle QA чистка очереди.
    #36708926
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mgA,

DBMS_ALERT коммиты не делает, но сериализует доступ к алерту.

На форуме пробегали всякие поделки направленные на улучшение DBMS_ALERT.

Наконец, почему бы просто не вставлять записи-сигналы в обычную таблицу. Получатель будет периодически просто вызывать delete, и если 0 < sql%rowcount, значит сигнал получен.
...
Рейтинг: 0 / 0
Oracle QA чистка очереди.
    #36709011
mgA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
mgA
Гость
А здесь же на форуме вроде написали что алерт делает коммиты. Или это что-то другое имелось ввиду? 8-(
...
Рейтинг: 0 / 0
Oracle QA чистка очереди.
    #36709014
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mgA,

ну кто то ляпнул не подумав. Всяко бывает. Вы лучше доку читайте.
...
Рейтинг: 0 / 0
Oracle QA чистка очереди.
    #36709015
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тебе вообще важно чтобы сообщения по порядку приходили? Или важен только факт соощения?
...
Рейтинг: 0 / 0
Oracle QA чистка очереди.
    #36709031
mgA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
mgA
Гость
Вообще оказывается что важно, сам толкьо что осознал :).

Использовать вместо очереди таблицу - это постоянное обращение к ораклу , не хотелось бы. Собственно так уже было до меня и этот вариант я и переделал на очереди.

Алерты - звучит заманчиво, на днях протестирую что это и с чем их едят.
...
Рейтинг: 0 / 0
Oracle QA чистка очереди.
    #36709041
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mgAАлерты - звучит заманчиво, на днях протестирую что это и с чем их едят.

Не обольщаяйся. Хорошее дело алертом не назовут.
...
Рейтинг: 0 / 0
Oracle QA чистка очереди.
    #36709070
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mgAИспользовать вместо очереди таблицу - это постоянное обращение к ораклу , не хотелось бы. Собственно так уже было до меня и этот вариант я и переделал на очереди.
Вы полагаете, что очередь - это не таблица, а dequeue - не "обращение к ораклу"?
Вы забавный :)
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Oracle QA чистка очереди.
    #39303614
VDom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Понятно что тема эта для автора давно "протухла", но возможно кому-то из коллег пригодится.
До появления AQ некоторой альтернативой был dbms_pipe. Почему бы его не использовать?
...
Рейтинг: 0 / 0
Oracle QA чистка очереди.
    #39303969
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VDomПонятно что тема эта для автора давно "протухла", но возможно кому-то из коллег пригодится.
До появления AQ некоторой альтернативой был dbms_pipe. Почему бы его не использовать?
Если не изменяет склероз:
1. Не работает между узлами RAC.
2. При определенной удаче (админ не заметил, а разраб не предусмотрел смерти читателя) можно завалить сервер, с грохотом или без - не помню.
...
Рейтинг: 0 / 0
Oracle QA чистка очереди.
    #39303984
Фотография Я и ёжик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymous2. При определенной удаче (админ не заметил, а разраб не предусмотрел смерти читателя) можно завалить сервер, с грохотом или без - не помню.
А попа дробнее?
...
Рейтинг: 0 / 0
Oracle QA чистка очереди.
    #39304013
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я и ёжикandrey_anonymous2. При определенной удаче (админ не заметил, а разраб не предусмотрел смерти читателя) можно завалить сервер, с грохотом или без - не помню.
А попа дробнее?
Ну был неописуемый случай когда-то, за давностью лет подробности слегка изгладились, так что на счет "дробнее" - "попа".
В общем виде: у Важного Заказчика продюсеры пайпили себе и пайпили, а консьюмер тихонько приказал долго жить и пайпы не вычитывал.
Через время наступил тотальный out of memory и без паллитры никто понять не мог с какого полинома неприятности. А Заказчик нервничал очень.
В общем, мутная тема - "то ли он украл, то ли у него украли..." :)
Админы потом на что-то жаловались в плане подъема системы - но было ли это связано непосредственно с переполнением или наложилось на админский прохлоп - не помню от слова "совсем".
Но один факт помню точно - после того случая пайпы в той системе были не то что запрещены, а просто доработки не согласовались.
...
Рейтинг: 0 / 0
Oracle QA чистка очереди.
    #39305277
Фотография Я и ёжик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymous,

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


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