即使运行涉及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解析器调用该视图。
任何想法都可能是问题所在,或者可能需要任何替代方法而无需完全重写?到目前为止,我发现的一种解决方案是创建表而不是视图,但这不是最佳解决方案。