ORA-03113 ao executar query

Dúvidas, dicas e truques de SQL, Select, Update, Delete, cláusulas, operações com joins, Funções em SQLs, etc
Avatar do usuário
Marciel
Rank: Analista Sênior
Rank: Analista Sênior
Mensagens: 158
Registrado em: Qui, 03 Mai 2007 10:12 am
Localização: Vitória - ES
Sabe qual o cúmulo da ignorância, da apatia e da ira?
Não sei, não quero saber e tenho raiva de quem sabe.

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?
Avatar do usuário
stcoutinho
Moderador
Moderador
Mensagens: 850
Registrado em: Qua, 11 Mai 2011 5:15 pm
Localização: são Paulo - SP

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
Avatar do usuário
Marciel
Rank: Analista Sênior
Rank: Analista Sênior
Mensagens: 158
Registrado em: Qui, 03 Mai 2007 10:12 am
Localização: Vitória - ES
Sabe qual o cúmulo da ignorância, da apatia e da ira?
Não sei, não quero saber e tenho raiva de quem sabe.

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.
Avatar do usuário
Marciel
Rank: Analista Sênior
Rank: Analista Sênior
Mensagens: 158
Registrado em: Qui, 03 Mai 2007 10:12 am
Localização: Vitória - ES
Sabe qual o cúmulo da ignorância, da apatia e da ira?
Não sei, não quero saber e tenho raiva de quem sabe.

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.
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 16 visitantes