Troubleshooting ORA-600: internal error code, arguments: [kksgaGetNoAlloc_Int0], [34], [24],

近期一套Oracle Database 12c (12.1.0.2.0)数据库在RAC ADG , 在standby端一个查询select语句涉及分区表, SQL解析时触发ora-600 [kksgaGetNoAlloc_Int0], [34], [24], 因为11.2.0.4对分区表对象在DDL后除了基础对象外引入了一个KGL handle 多版本对象,当分区计数和详细信息之间不匹配报错。

,

Oracle 11.2.0.4 “_part_access_version_by_number” = false

from 11.2.0.4, oracle use versioned KGL handle to store partitioned information, when DDL is execute against a partitioned object, it’s will increment a counter which is used is used in the KGL handle name that stores stores partitioning details. the counter is limited to 5 digits so once it exceed that digit count it migth pick up an old KGL versioned handle which would have stale data present.