|
X$KGLOB и прочие странности при старте приложения
|
|||
---|---|---|---|
#18+
Приложение на старте зачем-то делает Код: plsql 1. 2. 3. 4.
при этом тормозит секунд так 10. Есть ли идеи, что это оно хочет сделать и можно ли это как-то ускорить настройками БД или сегментов? Может, баг какой-то? Версия 11.2.0.3, соответственно, сразу после flush shared_pool некоторое время работает нормально. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2014, 18:25 |
|
X$KGLOB и прочие странности при старте приложения
|
|||
---|---|---|---|
#18+
Этот запрос вызывается только при первом вызове DBMS_ALERT.register в сессии, связан он с тем, что при использовании в первый раз в сессии пакета DBMS_ALERT, необходимо удалить потерянные pip-ы alert-а. Для этого осуществляется просмотр всего shared_pool. Начиная с 11GR2 у функции DBMS_ALERT.register есть параметр cleanup, который показывает выполнять ли эту очистку. Oracle® Database PL/SQL Packages and Types Reference 11g Release 2 (11.2)DBMS_ALERT.REGISTER ( name IN VARCHAR2, cleanup IN BOOLEAN DEFAULT TRUE); cleanup Specifies whether to perform cleanup of any extant orphaned pipes used by the DBMS_ALERT package. This cleanup is only performed on the first call to REGISTER for each package instantiation. The default for the parameter is TRUE. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2014, 18:49 |
|
X$KGLOB и прочие странности при старте приложения
|
|||
---|---|---|---|
#18+
К счастью или сожалению, не имею доступа к исходникам. Есть ли возможность изменить поведение по умолчанию или что-то еще придумать для ускорения этого несчастья? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2014, 20:10 |
|
X$KGLOB и прочие странности при старте приложения
|
|||
---|---|---|---|
#18+
Bug 9437010 DBMS_ALERT.REGISTER is slow Range of versions believed to be affected Versions BELOW 12.1 ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2014, 22:00 |
|
X$KGLOB и прочие странности при старте приложения
|
|||
---|---|---|---|
#18+
Была еще фишка, что DBMS_ALERT_INFO разрастается неподецки и выборка из нее занимает неприлично много времени (и существующий индекс здесь не помогает) Job-ы стали очень медленно работать. Помогите разобраться. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2014, 02:46 |
|
X$KGLOB и прочие странности при старте приложения
|
|||
---|---|---|---|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
Есть нагруженная СУБД, 19с версия, раскучерявленое приложение активно пользует DBMS_ALERT короткоживущими сессиями через ORDS. сессии оттормаживают на сабжевом запросе по X$KGLOB, трейсы это показывают. High Waits on "Latch: library cache" Linked to DBMS_ALERT.REGISTER Queries on X$KGLOB Even With Fix Bug 9437010 (Doc ID 2238764.1) дает пояснение причин - cleanup инициализация, nothing can be done to mitigate the higher initial costs of the first call. Раскопал хранимую процедуру с вызовом проблемного DBMS_ALERT.REGISTER, на тесте попробовал cleanup => false - запрос по X$KGLOB ушел, функциональных нарушений не оттестировано, но коректность и полнота тесткейсов под сомнением, т.к. пока не хватает понималки творческого замысла автора самого приложения, возможных последствий от "непрочищеных чакр" и как последствия правильно ловить на тесте. Кто работал с этим пакетом, проясните плз смысл последнего параметра cleanup, не догоняю по документации. Какие именно 'ORA$ALERT$%' pipes считаются за "orphaned"? При первом вызове DBMS_ALERT.REGISTER (alertname, TRUE) что именно удалится-зачистится и насколько потенциально опасно как для логики приложения так и здоровья shared pool БД самовольно сменить в приложении cleanup на FALSE? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.10.2021, 13:00 |
|
X$KGLOB и прочие странности при старте приложения
|
|||
---|---|---|---|
#18+
serpv, Заведите SR на сайте MOS. Пусть техподдержка официально ответит на ваши вопросы и даст рекомендации. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.10.2021, 14:44 |
|
X$KGLOB и прочие странности при старте приложения
|
|||
---|---|---|---|
#18+
Вердикт наших DBA после общения с саппортом вот такой: orphaned pipes - это именно те, которые остаются из под сессий, выполняемый код в которых не удосужился или не получил возможности сделать DBMS_ALERT.REMOVE или DBMS_ALERT.REMOVEALL после использования DBMS_ALERT. cleanup => true - костыль от неаккуратного кода. Логику приложения cleanup => false не нарушит, сигналы по алертам-сиротам просто проигнорируются, риск только в затрате ресурсов на эти отправки сигналов, возможно несколько вырастет общее потребление CPU со стороны приложения. Бесхозные алерты со временем удалятся фоновыми процессами СУБД, их бесконтрольное накопление можно мониторить например запросом SELECT count(SID) FROM DBMS_ALERT_INFO, для поиска именно бесхозных можно сопоставлять строки DBMS_ALERT_INFO.sid текущим SID SERIAL# из v$session. т.е. все последствия отражены вот тут: Код: plaintext 1. 2.
Соответственно можно смело применить изменение cleanup => false для проблемного DBMS_ALERT.REGISTER при условии контроля за накоплением алертов в DBMS_ALERT_INFO и связанным с ним потреблением CPU. Если что пойдет не так - вашему SR всегда будут рады :) остались открытыми вопросы: 1. Почему в документации Oracle, вместо что бы явно написать про удаление-неудаление алертов завершенных сессий, зачем-то пространно написано про «cleanup of any extant orphaned pipes used by the DBMS_ALERT package», 2. Зачем «проверочный» запрос на cleanup=>true помимо SELECT DISTINCT SID FROM DBMS_ALERT_INFO делает дополнительно фуллскан по всему shared pool. так что запрос Код: plsql 1.
тоже возможно имеет смысл в качестве мониторинга последствий cleanup => false. У меня главной проблемой являлся запрос по X$KGLOB, критично увеличивающий время DBMS_ALERT.REGISTER, тоже потребляющий ресурсы. Этот запрос при cleanup => false ушел, проблему это решило, без последствий или особенностей. Мониторили начнут ли копиться пайпы. Этого не произошло – т.е. приложение аккуратно за собой прибирает или фоновые процессы СУБД это успевают сделать. Специальный мониторинг по порогам и с оповещениями не понадобился, в моем случае все хорошо. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.10.2021, 14:40 |
|
|
start [/forum/topic.php?fid=52&msg=38747205&tid=1879782]: |
0ms |
get settings: |
21ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
46ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
178ms |
get tp. blocked users: |
1ms |
others: | 15ms |
total: | 295ms |
0 / 0 |