|
Медленный запрос в стиле xmltype.createxml(cursor(select ...
|
|||
---|---|---|---|
#18+
Имеется некая компонента (java), которая из sql-запроса делает констукцию типа select xmltype.createxml(cursor( select foo from bar )).getClobVal() from dual Работала она лет 10+ нормально, но с последним апгрейдом на 12.2.0.1 работать перестала. Не совсем, но практически: сложные запросы, которые отрабатывают за 10 секунд, в такой обертке работают по 30+ минут. На тестовой линии разница в 2 раза, что тоже странно, но терпимо. План отличается, но на глаз даже в варианте с xmltype не катастрофичный. Можно ли как-то заставить их работать адекватно? Хинты, аутлайны - не вариант, через схему работают десятки запросов. Хинт opt_param('optimizer_features_enable' тоже не помог, да и дело, похоже, не в sql. И да, история традиционная, прользователь бесправный, поэтому особо приветствуются советы без админских полномочий, на худой конец точечные. Очень надеюсь на какие-то настройки пулов памяти или еще чего-то, что влияет на xdk ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2019, 15:22 |
|
Медленный запрос в стиле xmltype.createxml(cursor(select ...
|
|||
---|---|---|---|
#18+
СэмкаПлан отличается, но на глаз даже в варианте с xmltype не катастрофичный. xmltype.createxml(cursor(stmt)) - stmt выполняется внутри xmltype. top-level statement - не дает полной картины по nested stmt. Например: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
Trace file: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
rowsource statistics: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27.
real-time sql monitoring report: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47.
Происходил FTS BIG, однако, 4d4fh0zz3np5s об этом не известно. Нужен ASH за время работы проблемного запроса по проблемной сессии, или SQL Monitoring Report (dbms_sqltune.report_sql_monitor(type=>'ACTIVE') - чтобы видеть recursive sql), или SQL Trace (wait=true,plan_stat=ALL_EXECUTIONS). ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2019, 16:49 |
|
Медленный запрос в стиле xmltype.createxml(cursor(select ...
|
|||
---|---|---|---|
#18+
Сэмкаxmltype.createxml(cursorСэмкаРаботала она лет 10+ нормально, но с последним апгрейдом на 12.2.0.1 Мы словили целый ряд проблем с похожими конструкциями при апгрейде с 12.1 на 12.2. Правда, у нас было внутри несколько cursor(), типа Сэмкаselect xmltype.createxml(cursor( select foo, >>>cursor(select ...from ...) cur1, cursor(select ...from ....)cur2<<< from bar )) from dual Плавающих проблем было вагон, начиная с утечек памяти, заканчивая различными ora-600. Как ни странно, но большинство проблем решил перенос такого запроса в отдельную pl/sql функцию с тем же самым запросом, но параметры передавались в параметрах функции. На самом деле, это делали для подробного логгирования параметров и ошибок, но, как ни странно, в итоге это решило все проблемы. Мы для теста переходили опять на просто запрос и снова начинали периодически вывалиться ошибки. Впрочем, я еще тогда сказал, что надо переделать на нормальную генерацию xml без xmltype(cursor()) и полгода назад переделали. С тех пор вообще никаких проблем. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2019, 17:10 |
|
|
start [/forum/topic.php?fid=52&gotonew=1&tid=1882220]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
44ms |
get topic data: |
14ms |
get first new msg: |
9ms |
get forum data: |
3ms |
get page messages: |
50ms |
get tp. blocked users: |
2ms |
others: | 13ms |
total: | 170ms |
0 / 0 |