關於'kksfbc child completion' wait的一個bug

cnhtm發表於2009-12-09

一個跑在aix作業系統上的Oracle 10.2.0.3的資料庫,經常出現'kksfbc child completion' 的等待事件,並且這些等待事件一旦出現,這些等待事件和相關的session永遠不會消失。


發現這個問題後,首先想到可能是oracle的bug,在metalink上查詢這個等待事件,發現兩個bug:

[@more@]1、Bug 6795880,相關的doc id為:6795880.8
A session may go into an infinite spin just after a wait for 'kksfbc child completion'. The spin occurs with a stack including kksSearchChildList -> kkshgnc where kksSearchChildList loops forever.
This problem can also lead to internal error such as any of
ORA-600 [kksSearchChildList1], ORA-600 [kksSearchChildList2]
ORA-600 [kksSearchChildList3], ORA-600 [kkshgnc-nextchild]
Note:
Fixes for this bug in 10g and 11gR1 are disabled by default.
To enable this fix you must explicitly set the following parameter for instance startup:
"_cursor_features_enabled" = 10

2、Bug 5500044,相關的doc id為:430555.1
Cause Execution of DDL against a partitioned object which has a object-based column (CLOB in this particular case) could result in sessions blocking on the 'cursor: pin X' and 'kksfbc child completion' wait events.
Database Hung With "kksfbc child completion" and "Cursor: Pin X" Waits [ID 430555.1]
This is due to Bug 5500044 (Bug 5217203 is closed as duplicate)
Bug 5217203 - SYSTEM STATES DUMPED TO TRACE FILE MESSAGES IN ALERT.LOG
Bug 5500044 - ORA-44203 ON TABLE_X_X CHILD FROM CONCURRENT LOB APPEND AND DROP PARTITION
To be seeing this problem under 10.2 then you are likely to need to see the following:
1) DDL on a partitioned table
2)Sessions block on 'cursor: pin X' and 'kksfbc child completion'
3)The 'cursor: pin X' is waiting on a pseudo cursor (a cursor with a name that starts with "table_")
4)The partitioned table has an object column (LOB, CLOB etc)
Note:- This issue can also be seen on partitioned table no having object columns like LOB,CLOB, etc.
Solution Please download and apply patch 5500044 for your platform.
This bug has been fixed in 10.2.0.4 and 11g. In case the patch is not available for your platform, then raise a service request with Oracle support for requesting the same

經檢查,在資料庫中沒有使用分割槽表,並且客戶表示沒有在資料庫上執行過ddl語句,不符合Bug 5500044的描述,確定為Bug 6795880,解決方法是設定隱含引數:
"_cursor_features_enabled" = 10 過程如下:

SQL> alter system set "_cursor_features_enabled" = 10 scope=spfile;
SQL> shutdown immediate;
SQL> startup;

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22049049/viewspace-1029493/,如需轉載,請註明出處,否則將追究法律責任。

相關文章