|
|
|
ORA-04030 и работа с XML
|
|||
|---|---|---|---|
|
#18+
Инцидент на одном из контуров Oracle. Исходные данные: Система на базе Oracle 11g (11.2.0.3) и интерфейс на платформе APEX 4.2. В системе реализован ряд сценариев по анализу данных на основе справочников, которые выступают в качестве параметров. Справочники загружаются в систему из XLSX файлов. Объем строк в файле - сотни тысяч. Excel парсится в апексовую коллекцию. Парсер реализован на PL/SQL. Используются методы из пакета dbms_xmldom. Поступает обращение: 4 раза подряд загрузили файл одинакового размера для тестирования корректности работы версионности, и на последней итерации упал экземпляр Oracle с ошибкой : Error occurred while painting error page: ORA-04030: out of process memory when trying to allocate 16408 bytes (koh-kghu sessi,static frame of inst) В общем, сессия во время парсинга нажирает большой объем PGA. А после отработки не возвращает. И обжорство длится до тех пор, пока не выжрется вся RAM. Т.е даже в SWAP не уходит. Завели обращение в Support: Ответ: 1) Использовать после завершения работы DBMS_SESSION.FREE_UNUSED_USER_MEMORY Не помогло. Отдает часть памяти (1-2 %), но явно не то, что занял парсинг. 2) Так как DBMS_XMLDOM создает LOB для хранения информации. Поступила рекомендация объявлять переменные и после работы явно очищать, например, DBMS_XMLDOM.FREENODE. Не вышло, выяснили, что возможны 2 типа LOB - Abstract и Temp(Cache). 1-й тип хранится в памяти, 2-й в Temp (на диске). Abstract крайне редко встречаются и это не наш случай. 3) В рекомендациях проскочила фраза про скрытый параметр _use_realfree_heap = TRUE Как оказалось, этот параметр отвечает за то, чтобы память немедленно после отработки возвращалась ОС. Это и есть решение нашей проблемы. В настоящее время ждем подтверждения. alter system set "_use_realfree_heap" = TRUE Загуглил название параметра и нарвался на сообщение на форуме (естественно, англоязычном) У коллег аналогичная проблема на загрузке XML. Напомню, что формат XLSX - это XML. Они тоже заводили обращение и тоже проблему решили параметром "_use_realfree_heap" = TRUE. Надеюсь кому-то пост окажется полезным. В целом беспокоит стабильность работы Oracle 11g с XML. Я уже имел опыт валидации XML по заданной схеме XSD. И 11g тоже подкачал, периодически уходил в себя, до отстрела сессии, чего не происходило в 12c. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2017, 17:31 |
|
||
|
ORA-04030 и работа с XML
|
|||
|---|---|---|---|
|
#18+
OCP_2015, Проблем на чём-то другом после применения параметра не вылезло? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2017, 17:45 |
|
||
|
ORA-04030 и работа с XML
|
|||
|---|---|---|---|
|
#18+
чудится мне _use_realfree_heap позволил вашему парсеру отжирать столько памяти, сколько им хочется, а не использовать ее более экономно ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2017, 17:48 |
|
||
|
ORA-04030 и работа с XML
|
|||
|---|---|---|---|
|
#18+
DВА, OCP_2015сессия во время парсинга нажирает большой объем PGA _use_realfree_heap - The memory for working areas can be allocated as heap 0 when the parameter is set to TRUE. This means that the memory is allocated as a separate heap and not as a sub-heap of the PGA . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2017, 17:58 |
|
||
|
ORA-04030 и работа с XML
|
|||
|---|---|---|---|
|
#18+
env, Спасибо за ссылку. Пока нет. Знаю, что DBA играли параметром _realfree_heap_pagesize_hint, с учетом того, что у нас на тестовом контуре всего 16 ГБ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2017, 18:14 |
|
||
|
ORA-04030 и работа с XML
|
|||
|---|---|---|---|
|
#18+
Странно, у меня на 11.2.0.3 (Solaris SPARC64, Linux x64, Linux x86, Windows x86) _use_realfree_heap = TRUE по умолчанию (ksppstdf = TRUE) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2017, 04:01 |
|
||
|
ORA-04030 и работа с XML
|
|||
|---|---|---|---|
|
#18+
Слава, А _realfree_heap_pagesize_hint во что при этом выставлен? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2017, 09:29 |
|
||
|
ORA-04030 и работа с XML
|
|||
|---|---|---|---|
|
#18+
Ну там страничка 32k и их кол-во 64k (или наоборот), в общем 2G в произведении На всех. И с маленькой (2g), и с побольше (60g) SGA. И на 32 бит, и на 64 Но я при перестройке индекса в один поток юзаю до 4G PGA, а PL/SQL таблицы в одной сессии забирали до 16G (SPARC64) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2017, 12:59 |
|
||
|
ORA-04030 и работа с XML
|
|||
|---|---|---|---|
|
#18+
OCP_2015Excel парсится в апексовую коллекцию. Парсер реализован на PL/SQL. Используются методы из пакета dbms_xmldom.dbms_xmldom больше нужен когда надо менять документ. Для парсинга достаточно других средств. Почему было решено использовать именно его? OCP_20152) Так как DBMS_XMLDOM создает LOB для хранения информации. Поступила рекомендация объявлять переменные и после работы явно очищать, например, DBMS_XMLDOM.FREENODE. Не вышло, выяснили, что возможны 2 типа LOB - Abstract и Temp(Cache). 1-й тип хранится в памяти, 2-й в Temp (на диске). Abstract крайне редко встречаются и это не наш случай."Не вышло" - это очень конкретная и профессиональная формулировка. Вообще dbms_xmldom проектировал какой-то наркоман, но free* процедуры частично помогают. Процедуры ниже имеют абсолютно идентичный функционал только вторая еще за собой подчищает. p_xmldom Код: 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. p_xmldom_fixed Код: 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. Для первой на создание документа с 10к узлами ушло 58 метров PGA, для второй - 7. Код: 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. 48. 49. 50. 51. 52. 53. Код: 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. 48. 49. 50. 51. 52. 53. скриптик для теста Код: 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. OCP_2015... скрытый параметр ... ждем подтверждения ... Надеюсь кому-то пост окажется полезным ... Вместо вашего опыта общения с техподдержкой для остальных полезнее был бы test case с демонстрацией когда все плохо и когда все хорошо с влиянием указанного параметра. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2017, 01:06 |
|
||
|
ORA-04030 и работа с XML
|
|||
|---|---|---|---|
|
#18+
dbms_photoshop, Спасибо за скрипты и процедуры, это , действительно, полезный материал. авторdbms_xmldom больше нужен когда надо менять документ. Для парсинга достаточно других средств. Почему было решено использовать именно его? Парсер - апексовый плагин, с заврапленным кодом. Мы его разврапили и залезли в код, добавили только очищение. автор"Не вышло" - это очень конкретная и профессиональная формулировка. На SQL.RU многие участники пытаются оценить чей-то профессионализм. Это личные комплексы и самоутверждение? Одному мне это видится не профессиональным? Риторический вопрос. OCP2015"Не вышло" В контексте проблемы - утилизация памяти не изменилась. авторВместо вашего опыта общения с техподдержкой для остальных полезнее был бы test case с демонстрацией когда все плохо и когда все хорошо с влиянием указанного параметра. Test case постараюсь предоставить, когда будут подтверждены результаты администраторами. Не имею доступа к контуру. Ранее коллега написал: Вячеслав Любомудров Странно, у меня на 11.2.0.3 (Solaris SPARC64, Linux x64, Linux x86, Windows x86) _use_realfree_heap = TRUE по умолчанию (ksppstdf = TRUE) Я на своем контуре разработки проверил параметры и тоже увидел аналогичный результат. Хотя уверен, что за 3 года моей работы, его никто не устанавливал. _realfree_heap_pagesize_hint 65536 _use_realfree_heap TRUE Возможно, кто-то ранее "похозяйничал" и менял параметры у заказчика, что и привело к проблеме. В целом, пост не является конкретным решением. Это направление для размышления и экспериментов на основании рекомендации Support`а. Если можете доказать, что рекомендация бесполезная, то напишите в этой теме и можно ее закрыть. Если у кого-то возникнет желание обсуждать профессионализм Support`а, то , пожалуйста, делайте это не в данной теме. «Не согласен - критикуй, критикуешь - предлагай, предлагаешь - делай, делаешь - отвечай!» ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2017, 12:42 |
|
||
|
ORA-04030 и работа с XML
|
|||
|---|---|---|---|
|
#18+
OCP_2015Возможно, кто-то ранее "похозяйничал" и менял параметры у заказчика, что и привело к проблеме.Именно Кто-то залез грязными ручками и изменил недокументированные параметры (которые, как известно, меняются только по прямому указанию саппорта) Я могу подсказать еще несколько недокументированных параметров (для разминки), после которых БД и не поднялась бы после краха ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2017, 12:48 |
|
||
|
ORA-04030 и работа с XML
|
|||
|---|---|---|---|
|
#18+
OCP_2015На SQL.RU многие участники пытаютсяБыл сделан намек что наблюдения лучше сопровождать скриптами а не впечатлениями. Ну это для технических специалистов, конечно, а не любителей эпистолярного жанра. Когда ты переносишь оценку фразы на оценку лично себя подумай прежде всего о своих комлексах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2017, 12:56 |
|
||
|
ORA-04030 и работа с XML
|
|||
|---|---|---|---|
|
#18+
OCP_2015Если можете доказать, что рекомендация бесполезная, то напишите в этой теме и можно ее закрыть. Если у кого-то возникнет желание обсуждать профессионализм Support`а, то , пожалуйста, делайте это не в данной теме. «Не согласен - критикуй, критикуешь - предлагай, предлагаешь - делай, делаешь - отвечай!» тут отвечающие не занимаются закрытием тем, а вопрошающие не указывают другим что где писать цитатки лучше оставь для своей группы вконтактиге ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2017, 13:04 |
|
||
|
ORA-04030 и работа с XML
|
|||
|---|---|---|---|
|
#18+
dbms_photoshop, Намек на скрипты был адекватно воспринят. авторКогда ты переносишь оценку фразы на оценку лично себя подумай прежде всего о своих комлексах. Давайте, не будем продолжать. Я не сомневаюсь в вашей экспертизе, поскольку пользовался вашими полезными комментариями, еще будучи джуниором. Спасибо за Ваши комментарии. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2017, 13:33 |
|
||
|
ORA-04030 и работа с XML
|
|||
|---|---|---|---|
|
#18+
OCP_2015Знаю, что DBA играли параметром _realfree_heap_pagesize_hint, с учетом того, что у нас на тестовом контуре всего 16 ГБ. а вы тогда хто? OCP у вас в нике - просто случайное сочетание букв? )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2017, 14:58 |
|
||
|
ORA-04030 и работа с XML
|
|||
|---|---|---|---|
|
#18+
dbms_photoshopВместо вашего опыта общения с техподдержкой для остальных полезнее был бы test case с демонстрацией когда все плохо и когда все хорошо с влиянием указанного параметра. да нечего там особо демонстрировать, админы скорее всего поигрались с параметром _realfree_heap_pagesize_hint, в результате стало можно выесть побольше памяти, чем по-умолчанию. Вариантов-то других нет ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2017, 15:00 |
|
||
|
ORA-04030 и работа с XML
|
|||
|---|---|---|---|
|
#18+
Вроде, как OCP бывают и разработчики ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2017, 15:00 |
|
||
|
ORA-04030 и работа с XML
|
|||
|---|---|---|---|
|
#18+
Вроде как раз понятно, что поигрались с _use_realfree_heap ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2017, 15:01 |
|
||
|
ORA-04030 и работа с XML
|
|||
|---|---|---|---|
|
#18+
Вячеслав ЛюбомудровВроде, как OCP бывают и разработчики точно ) совсем зашоренная стала )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2017, 15:01 |
|
||
|
ORA-04030 и работа с XML
|
|||
|---|---|---|---|
|
#18+
Вячеслав ЛюбомудровВроде как раз понятно, что поигрались с _use_realfree_heap я имею в виду после чего проблема ушла, а не когда все испортили ) коду не хватило того объема пга, что он мог отхватить в рамках процесса по-умолчанию - 64к страниц, параметр увеличили, код потребности свои удовлетворил )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2017, 15:04 |
|
||
|
ORA-04030 и работа с XML
|
|||
|---|---|---|---|
|
#18+
DВА, Я разработчик. DBAя имею в виду после чего проблема ушла, а не когда все испортили ) коду не хватило того объема пга, что он мог отхватить в рамках процесса по-умолчанию - 64к страниц, параметр увеличили, код потребности свои удовлетворил )) Вы уверены, что правильно поняли проблему? Экземпляр падал минимум на 4-ой итерации выполнения процедуры парсера. Т.е полный цикл завершался, памяти хватало. Но после отработки память не возвращается. Поэтому первые рекомендации от Support`а были очищать явно переменные в парсере. Я параметров не видел, их , возможно, вернули в стандартное значение и проблема пропала. Обратной связи от группы поддержки у заказчика пока не было. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2017, 15:25 |
|
||
|
ORA-04030 и работа с XML
|
|||
|---|---|---|---|
|
#18+
OCP_2015Вы уверены, что правильно поняли проблему? а вы попытались ее корректно описать? сколько памяти съедал процесс после первой итерации,замерили? после второй, четвертой? до изменения параметра? после изменения параметра? какое значение параметра было выставлено изначально? какого именно параметра? или будем продолжать гадать над вашей проблемой и ее тайным решением? )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2017, 15:32 |
|
||
|
ORA-04030 и работа с XML
|
|||
|---|---|---|---|
|
#18+
DВА, DBA... какого именно параметра? Замеры разумеется проводились. Когда найдем решение, я его сообщу. Спасибо, за желание и готовность помочь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2017, 15:40 |
|
||
|
ORA-04030 и работа с XML
|
|||
|---|---|---|---|
|
#18+
все-таки показали бы тест-кейс вместе с process_memory_details? можете на основе этого скрипта: https://github.com/xtender/xt_scripts/blob/master/pga/details.sql ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2017, 15:57 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=39565318&tid=1884765]: |
0ms |
get settings: |
6ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
143ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
65ms |
get tp. blocked users: |
2ms |
| others: | 199ms |
| total: | 446ms |

| 0 / 0 |
