客户11.2.0.2环境数据库出现这个ORA-600错误。
详细错误信息如下:
Tue Jun 12 09:50:47 2012 Errors IN file /u01/app/oracle/diag/rdbms/orcl/orcl2/trace/orcl2_ora_28252.trc (incident=329000): ORA-00600: internal error code, arguments: [qctopn1], [], [], [], [], [], [], [], [], [], [], [] Incident details IN: /u01/app/oracle/diag/rdbms/orcl/orcl2/incident/incdir_329000/orcl2_ora_28252_i329000.trc Tue Jun 12 09:51:21 2012 Dumping diagnostic DATA IN directory=[cdmp_20120612095121], requested BY (instance=2, osid=28252), summary=[incident=329000]. Tue Jun 12 09:51:21 2012 USE ADRCI OR Support Workbench TO package the incident. See Note 411.1 at My Oracle Support FOR error AND packaging details. Tue Jun 12 09:51:22 2012 Sweep [inc][329000]: completed Sweep [inc2][329000]: completed |
导致这个错误的原因在于CREATE TABLE语句执行的时候尝试对子查询接嵌套。详细的描述可以参考Bug 10398457 – ORA-600 [qctopn1] from disjunctive Subquery Unnest on a CREATE TABLE as SELECT [ID 10398457.8]。这个错误确认影响的数据库版本为11.2.0.2,Oracle在11.2.0.3中FIXED了这个问题。
除了版本升级外,还可以通过设置隐含参数”_optimizer_cost_based_transformation”为FALSE,或者设置”_fix_control”的值为”4768040:OFF”来避免子查询的UNNEST。