首页 > 解决方案 > 使用 XMLTABLE 视图时出现“ORA-03113:通信文件结束”

问题描述

即使在运行涉及带有 XMLTABLE 的视图的最简单查询时,Oracle (11g) 也会返回ORA-03113错误并终止连接。发生这种情况的查询不需要很大,但它似乎总是在涉及具有 XMLTABLE 解析的视图时发生。

例如,假设一个视图具有以下 SQL:

CREATE VIEW test_view
AS SELECT id, date, xt.a
FROM test_xml_table x,
     XMLTABLE(XMLNAMESPACES(DEFAULT 'some:default:formation'),
              '//root/' PASSING XMLTYPE(x.xml) COLUMNS a
               VARCHAR2(256) PATH '//@a1') xt
WHERE xml IS NOT NULL;

WITH 
v_raw AS
 (SELECT * 
  FROM test_view WHERE id = 1),
v_aggregate AS
   (SELECT * 
    FROM v_raw)
SELECT 1 FROM v_raw WHERE rownum <= 1
UNION ALL
SELECT 1 FROM v_aggregate WHERE rownum <= 1;

出于示例目的,我已经尽可能地简化了查询,但这足以导致以下错误:

ORA-03113: end-of-file on communication channel

和更简单的查询都test_view工作得很好而且很快,似乎只有在选择中同时处理至少两个视图时才会发生这种情况,其中一个使用 XML 解析器调用视图。

任何想法可能是什么问题或任何可能的解决方法而不需要完全重写?到目前为止,我发现的一个解决方案是创建一个表而不是视图,但这不是最佳解决方案。

标签: sqloracleoracle11g

解决方案


推荐阅读