Вы не должны хранить такие большие XML-файлы как XMLType
в базе данных Oracle.
Большинство XML-функций в Oracle основаны на Document Object Model (DOM), что требует, чтобы весь документ XML был загружен в память, включая огромное количество служебных данных. Даже на больших машинах это часто вызывает утечку памяти или подобные проблемы.
Чтобы разместить такой XML в базе данных, вы должны рассмотреть внешний поток, основанный на событиях XML-парсер, часто называемый SAX (Simple API for XML). У вас есть анализаторы SAX, доступные практически на всех языках программирования. Содержимое XML затем сохраняется как обычные реляционные данные. Создание такого большого XML из базы данных Oracle будет выполняться «по очереди» в CLOB
.
Смотрите также PL/SQL APIs for XMLType
Этот тип обработки процедурного доступен через интерфейс SAX в Java и C компонентов Oracle XDK.
Обычно вам необходимо написать больше кода при использовании анализатора SAX, поскольку он не содержит никаких элементов модификации или запроса. В то же время доступны анализаторы, основанные на потоке (например, Perl XML::Twig), которые так же мощны, как парсер, основанный на DOM.
Я не очень хорошо знаком с xml, но я рассмотрел цикл, извлечение кусков узлов в clobsize и хранение его в указанных кусках. Но, видя, что эти файлы могут стать потенциально БОЛЬШОЙ, это займет много времени. – Moptan