Página 1 de 1

ORA-03113 ao executar query

Enviado: Sex, 26 Abr 2013 2:47 pm
por Marciel
Boa tarde,

Tenho uma tabela com uma coluna do tipo xmltype. Ao fazer uma consulta conforme abaixo, ocorre erro "ORA-03113: end-of-file on communication channel".

Selecionar tudo

SELECT  DOC_XML.ID,
        EXTRACTVALUE (XML.COLUMN_VALUE, '//rowset/name/text()') AS XML_NAME,
        EXTRACTVALUE (XML.COLUMN_VALUE, '//rowset/value/text()') AS XML_VALUE
   FROM DOC_XML,
        TABLE (XMLSEQUENCE (DOC_XML.XML_DATA)) XML
Se eu comentar as linhas que extraem os valores do XML, roda sem problemas. O pior é que esse problema só acontece na base de dados do cliente (Oracle 11), e não ocorre na minha base de testes (Oracle 10g).

Alguma sugestão?

Re: ORA-03113 ao executar query

Enviado: Sex, 26 Abr 2013 6:20 pm
por stcoutinho
Oi Marcel,

Não sou especialista XML, mas consultando os foruns OTN, me parece que existe um BUG do 11g relacionado com o XML:
Support note 1302819.1 "Select ExtractValue = ORA-3113 / ORA-7445[LpxMemFree()+200]"
Para este problema em específico, mencionam a aplicação de um parche. Maiores detalhes podem ser encontrados no METALINK (ORACLE SUPPORT), caso você disponha de acesso. Eu infelizmente não posso postar aqui no forum este material, pois é propriedade da ORACLE.

Uma recomendação da nota é que existe uma solução alternativa para este problema, que seria substituir todas as funções proprietárias do ORACLE XML por funções XQUERY padrões. Maiores detalhes sobre esta operação podem ser encontradas no artigo METALINK abaixo:
1072039.1 "Replacement of Oracle Proprietary XML Functions with XQuery Standard Functions"
Pode ser que outros foristas tenham se deparado com este problema e possam dar alguma sugestão. Você também pode tentar pesquisar no GOOGLE sobre estas notas, para ver se você se depara com algum artigo fora do METALINK.

Também encontrei este artigo onde o bloguista menciona de um erro de XML que só ocorre no 11G. Este artigo pode ser consultado neste link:
Se tiver acesso ao METALINK (ou alguém de sua empresa) eu recomendo que acesse estes artigos para ver como pode resolver seu problema.

Esepero ter podido lhe ajudar em algo.

Abraços e boa sorte,

Sergio Coutinho

Re: ORA-03113 ao executar query

Enviado: Seg, 29 Abr 2013 5:13 pm
por Marciel
Boa tarde Sérgio, obrigado pela resposta.

"Resolvi" o problema alterando a forma de leitura do XML.

Selecionar tudo

SELECT  DOC_XML.ID,
        XML.XML_NAME,
        XML.XML_VALUE
   FROM DOC_XML,
        XMLTABLE ('//rowset' PASSING DOC_XML.XML_DATA COLUMNS
                  XML_NAME VARCHAR2 (50) PATH '//rowset/name/text()',
                  XML_VALUE VARCHAR2 (50) PATH '//rowset/value/text()')) XML
Aliás, usando XMLTable a sintaxe é bem mais intuitiva.

Re: ORA-03113 ao executar query

Enviado: Qua, 08 Mai 2013 8:49 am
por Marciel
Outra solução:

Selecionar tudo

SELECT /*+ NO_XML_QUERY_REWRITE */ --<< 
        DOC_XML.ID,
        EXTRACTVALUE (XML.COLUMN_VALUE, '//rowset/name/text()') AS XML_NAME,
        EXTRACTVALUE (XML.COLUMN_VALUE, '//rowset/value/text()') AS XML_VALUE
   FROM DOC_XML,
        TABLE (XMLSEQUENCE (DOC_XML.XML_DATA)) XML
Da documentação:
The NO_XML_QUERY_REWRITE hint instructs the optimizer to prohibit the rewriting of XPath expressions in SQL statements. By prohibiting the rewriting of XPath expressions, this hint also prohibits the use of any XMLIndexes for the current query.