Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
Архив форумов ЦИТФорума
Море(!) вопросов - Море(!) ответов
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 
Как правильно задавать вопросы

Проблема с Oracle92 в части DBMS_XMLDOM

 
Перейти:  
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Базы данных
Предыдущая тема :: Следующая тема  
Автор Сообщение
Antimof



Зарегистрирован: 04.08.2004
Сообщения: 41
Откуда: Тольятти

СообщениеДобавлено: Пн Авг 23 2004 09:12    Заголовок сообщения: Проблема с Oracle92 в части DBMS_XMLDOM Ответить с цитатой

Вот исходник тестовой процедуры

Код:

create table aclob (res clob);


Код:

create or replace procedure xmltest is
   outDoc dbms_xmldom.DOMDocument;
   outNode dbms_xmldom.DOMNode;
   curNode dbms_xmldom.DOMNode;
   xmlElem dbms_xmldom.DOMElement;
   xmlText dbms_xmldom.DOMText;
   cnt1 number;
   cnt2 number;
   outXML clob;
begin

   dbms_lob.createtemporary(outXML, cache => true);
   
   outDoc:=dbms_xmldom.newDOMDocument;
   dbms_xmldom.setVersion(outDoc, '1.0');
   dbms_xmldom.setCharset(outDoc, 'UTF8');
   outNode:=dbms_xmldom.makeNode(outDoc);

   xmlElem:=dbms_xmldom.createElement(outDoc, 'ROOT_NODE');
   curNode:=dbms_xmldom.appendChild(outNode, dbms_xmldom.makeNode(xmlElem));
   
   for cnt1 in 1 .. 100 loop
      xmlElem:=dbms_xmldom.createElement(outDoc, 'SUBNODE1');
      xmlText:=dbms_xmldom.createTextNode(outDoc, 'Subnode1 number '||cnt1);
      curNode:=dbms_xmldom.appendChild(curNode, dbms_xmldom.makeNode(xmlElem));
      curNode:=dbms_xmldom.appendChild(curNode, dbms_xmldom.makeNode(xmlText));      
      curNode:=dbms_xmldom.getParentNode(curNode);
      
      for cnt2 in 1 .. 100 loop
         xmlElem:=dbms_xmldom.createElement(outDoc, 'SUBNODE2');
         xmlText:=dbms_xmldom.createTextNode(outDoc, 'Subnode2 number '||cnt2);
         curNode:=dbms_xmldom.appendChild(curNode, dbms_xmldom.makeNode(xmlElem));
         curNode:=dbms_xmldom.appendChild(curNode, dbms_xmldom.makeNode(xmlText));      
         curNode:=dbms_xmldom.getParentNode(curNode);
         curNode:=dbms_xmldom.getParentNode(curNode);
      end loop;
      curNode:=dbms_xmldom.getParentNode(curNode);      
      
   end loop;
   
   dbms_xmldom.writeToClob(outNode, outXML);
   insert into aclob (res) values (outXML);
   commit;
   
end xmltest;


когда будете запускать скорее всего у вас ничего не получится
зато если уменьшить величину цикла например до 10 в каждой итерации, то все работает

выяснил, что глюк возникает где-то после 512Кб генерируемого XML

причем ошибки могут быть разные, и они не относятся к какой-то конкретной строке

создается впечатление что процессу просто не хватает памяти или чего-то еще.

Очень хочу узнать у кого получится (и каким образом) генерить документ размером до 20МВ таким вот способом.

Заранее спасибо.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
wildwind



Зарегистрирован: 03.02.2004
Сообщения: 268
Откуда: Москва

СообщениеДобавлено: Чт Авг 26 2004 20:15    Заголовок сообщения: Ответить с цитатой

Какая ошибка выдается?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Antimof



Зарегистрирован: 04.08.2004
Сообщения: 41
Откуда: Тольятти

СообщениеДобавлено: Пт Авг 27 2004 09:02    Заголовок сообщения: Ответить с цитатой

ORA-31099: XDB Security Internal Error

плюс иногда просто ругается на неправильные ноды (при всем при этом - выполнив цикл несколько раз на этих же нодах)

ошибка "плавает" по строкам

изменение Java Pool никак не влияет.

на otn посоветовали поставить 9.2.0.4

мне бы хотелось узнать точно сработает ли тестовая процедура на этой версии.

просто запустите ее pls и попробуйте сгенерировать десяток-другой мегабайт XML-пакета.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
wildwind



Зарегистрирован: 03.02.2004
Сообщения: 268
Откуда: Москва

СообщениеДобавлено: Пт Авг 27 2004 20:17    Заголовок сообщения: Ответить с цитатой

Запустил. Oracle 9.2.0.5.

Ваш тест, где оба цикла до 100, генерит XML размером 433 К (всего Smile ), поэтому я немного изменил его, задав оба цикла до 1000. И в таблицу писать не стал, а просто возвращал клиенту clob и его размер. И еще добавил FreeDocument() в конце.

Работал он долго (время к сожалению не замерил), но отработал. Получился clob в 44938918 байт (под 43 метра). После завершения статистика показала 501817752 PGA (813965720 max) и 500829056 UGA (столько же max).

Кстати, после того как документ записан в clob и больше не нужен, надо бы вызывать FreeDocument(), а то боюсь так можно сервер положить запросто. А когда временный clob больше не нужен, его тоже надо освобождать (dbms_lob.FreeTemporary). А лучше всего вообще обойтись без временного, и писать XML прямо в таблицу, через локатор.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Antimof



Зарегистрирован: 04.08.2004
Сообщения: 41
Откуда: Тольятти

СообщениеДобавлено: Пн Авг 30 2004 07:47    Заголовок сообщения: Ответить с цитатой

Это хорошая новость.

Спасибо за помощь, займусь апгрейдом СУБД.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Базы данных Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2002 phpBB Group
Русская поддержка phpBB

 

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 6608306, ICQ 232284597
Пресс-релизы — pr@citforum.ru
Послать комментарий
Информация для авторов
This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2006 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...