使用XMLTABLE视图时出现“ ORA-03113:通信文件结束”

时间:2018-07-31 10:41:42

标签: sql oracle oracle11g

即使运行涉及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解析器调用该视图。

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

0 个答案:

没有答案