имеется таблица со столбцом имеющим тип clob, в которой содержатся данные в формате xml
при попытке выборки запрос зависает, если размер clob больше 3.5 гигабайт, если меньше то
отрабатывает нормально
запрос вида
Я с этим разбирался во времена десятки. Сделал вывод, что движок использует для парсинга XML мало того, что жутко тормозящую реализацию на Java, так ещё вдобавок и DOM. Соответственно, когда она выйдет из строя — вопрос времени (ну а также доступной оперативки и нагрузки на сервер). В 12-й, думаю, ничего особенного не изменилось.
Общий вывод — оракловый XML вполне кошерно использовать для формирования выходных документов, но лучше не использовать для парсинга и манипуляций (разве что документы заведомо маленькие, впрочем, он и в этом случае с ними тормозит на пару порядков по сравнению с хорошими решениями). Ну а что касается ФИАС — парсить его не SAX-ом как бы изначально не очень вменяемая мысль.
Re: oracle зависает при парсинге xml в колонке clob
Здравствуйте, ch_victor, Вы писали:
_>имеется таблица со столбцом имеющим тип clob, в которой содержатся данные в формате xml _>при попытке выборки запрос зависает, если размер clob больше 3.5 гигабайт, если меньше то _>отрабатывает нормально
Дело в том, что не надо хранить данные такого размера в XML, не надо пытаться обрабатывать данные такого размера встроенными средствами чего бы то ни было, и уж тем более не надо это делать внутри БД.
Возможно стоит слегка забить болт на бизнес-задачи (возможно шуруп, и в голову постановщику задач, а также всем выше стоящим по иерархии) и заняться собственно программированием, рефакторингом. Чтобы вот такого в БД не было.
Re[2]: oracle зависает при парсинге xml в колонке clob
Здравствуйте, Softwarer, Вы писали:
S>Здравствуйте, ch_victor, Вы писали:
S>Я с этим разбирался во времена десятки. Сделал вывод, что движок использует для парсинга XML мало того, что жутко тормозящую реализацию на Java, так ещё вдобавок и DOM. Соответственно, когда она выйдет из строя — вопрос времени (ну а также доступной оперативки и нагрузки на сервер). В 12-й, думаю, ничего особенного не изменилось.
S>Общий вывод — оракловый XML вполне кошерно использовать для формирования выходных документов, но лучше не использовать для парсинга и манипуляций (разве что документы заведомо маленькие, впрочем, он и в этом случае с ними тормозит на пару порядков по сравнению с хорошими решениями). Ну а что касается ФИАС — парсить его не SAX-ом как бы изначально не очень вменяемая мысль.
у меня все работало когда тип поля в таблице был xmltype и данные туда загружались напрямую из файлов с помощью sqlldr, но на базе заказчика по какой то причине sqlldr не стал импортировать данные в xmltype в режиме DIRECT=TRUE, поэтому пришлось поменять тип столбца на clob, после этого импорт пошел
но дальше возникла проблема зависания при преобразовании clob в xmltype
чтобы использовать SAX я так понимаю надо писать процедуры парсинга на java и запускать их потом в pl/sql ? я пытался найти простой пример как это можно сделать, но что то ничего не нашел
Re[3]: oracle зависает при парсинге xml в колонке clob
Здравствуйте, ch_victor, Вы писали:
_>у меня все работало когда тип поля в таблице был xmltype и данные туда загружались напрямую из файлов с помощью sqlldr, но на базе заказчика по какой то причине sqlldr не стал импортировать данные в xmltype в режиме DIRECT=TRUE, поэтому пришлось поменять тип столбца на clob, после этого импорт пошел
При использовании xmltype документ парсится при загрузке и потом хитро индексируется. А при CLOB парсится при каждом запросе. Чувствуешь разницу? Даже без проблем с памятью за такое а-та-та делают.
Лучше разберитесь с лоадером и загрузите нормально.
Re: oracle зависает при парсинге xml в колонке clob
Здравствуйте, ch_victor, Вы писали:
_>Добрый день _>версия oracle 12.2.0.1 _>подскажите в чем может быть дело, как еще можно разобрать xml такого размера?
Судя по набору данных — это ГАР.
Там XML объемом суммарным под 400 Гигабайт (если распаковать 38 гиговый ZIP архив), никакой парсер (разве что SAX) такие объемы не потащит.
Я писал кастомный загрузчик ГАР в оракл, работал с этими XML файлами просто как с текстом, ибо формат файлов простой и заранее известный.
Нет никакой необходимости разбирать его именно как XML.
Я даже файлы для обработки напрямую из архива выуживаю, чтобы не распаковывать этого монстра.
--------------------------------------------------------------
Правильно заданный вопрос содержит в себе половину ответа