You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Oracle 12c创建物化视图触发ORA-00600与ORA-03113错误咨询

这是Oracle 12c的已知Bug,对应官方Bug编号22166315。
触发条件正是创建物化视图时,子查询内包含ORDER BY子句加rownum限制的逻辑,当ORDER BY后调用DBMS_RANDOM这类函数时,会进一步提高触发概率。错误本质是Oracle后台进程在处理物化视图的查询重写逻辑时出现内存访问异常,抛出内部错误ORA-00600后强制断开会话连接,因此你会收到ORA-03113通信通道中断的报错。

可通过以下几种方案规避:

  • 改写SQL逻辑,先把UNION结果存入临时表再创建物化视图:
-- 创建临时表存储UNION结果
CREATE GLOBAL TEMPORARY TABLE tmp_union_res AS
SELECT * FROM table1
UNION
SELECT * FROM table2;

-- 基于临时表创建物化视图
CREATE MATERIALIZED VIEW orders_mv AS
SELECT * 
FROM (
  SELECT * FROM tmp_union_res
  ORDER BY DBMS_RANDOM.VALUE
) WHERE rownum <= 5;
  • 用12c原生支持的FETCH FIRST语法替代rownum过滤,可直接规避该Bug:
CREATE MATERIALIZED VIEW orders_mv AS
SELECT * FROM table1
UNION
SELECT * FROM table2
ORDER BY DBMS_RANDOM.VALUE
FETCH FIRST 5 ROWS ONLY;
  • 长期使用可申请对应官方补丁,补丁适配12.1.0.2及以上所有12c版本,安装后可彻底修复该问题。

内容的提问来源于stack exchange,提问作者Landon Statis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 02:36:03