开发丢过来一段sql,说是在测试库执行正常,在正式库执行报错:ORA-00600: 内部错误代码, 参数: [qksdmlMrgViewDestFro_4], [141000], [121103], [], [], [], [], [], [], [], [], [],让帮忙分析一下原因。看了一下sql,是一大段复杂的merge into ,测试库版本为11.2.0.4,正式库版本为12.2.0.1,首先怀疑是触发了12c 的bug,mos 搜寻果不其然,mos 上说12.2.0.1已经修复了此bug。
mos 提供的解决方式:alter session set "_remove_aggr_subquery"=false
实际测试后无效,执行merge into sql 依然报相同的错误,想到测试库执行正常,正式库执行报错,通过将正式库sql 优化器版本行为回退至与测试库优化器版本行为一致或许能解决问题,通过在sql 中增加hint /*+ optimizer_features_enable('11.2.0.4') */ 后执行恢复正常,调整后sql 片段如下,特此记录。