7 x 24 在线支持!
Oracle 自動セグメント領域管理されている表を select すると ORA-600[kcbgtcr_12] 発生
ORACLEデータベース によくあるエラ の解決策
プロのOracle Databaseの復旧サービスを提供
携帯番号: +86 13764045638 メール:service@parnassusdata.com
[起こりうる現象] 自動セグメント領域管理されている表を select すると 次の3つのエラーのいずれかが発生します。 a) ORA-08103: object no longer exists b) ORA-00600: internal error code, arguments: [kcbgtcr_12], [1] c) ORA-01410: invalid ROWID <ORA-600[kcbgtcr_12] の Stack Trace> ksedmp ksfdmp kgerinv kgeasnmierr kcbassertb1 kcbgtcr ktrget kdstgr qertbFetch opifch2 ... [対象リリース] 問題が発生するリリース :Oracle 9i Database Release1 (9.0.1) Oracle 9i Database Release2 (9.2.0) 問題を修正したリリース :Oracle Database 10g Release 1 (10.1.0) 問題を修正予定のリリース:なし 問題を修正したPSR :PSR9.2.0.3 問題を修正予定のPSR :なし [対象プラットフォーム] すべてのプラットフォーム [起こりうる条件] 以下の条件を全て満たす場合に発生する可能性があります。 1. ローカル管理表領域上に作成した自動セグメント領域管理されている表を select する 2. 1つのビットマップブロック(BMB)上に複数の管理エクステント(レンジ)が存在する 3. 1つの BMB 上の2つの連続したレンジの管理するデータブロックアドレス(DBA)が 逆順になっている [例] レンジ1 が DBA:10〜19 のブロック、レンジ2 が DBA:0〜9 のブロックを それぞれ管理しているようなケース: Range 1 -> dba:10 length:10 Range 2 -> dba:0 length:10 4. 表の High Water Mark (HWM) が 3. のレンジ1の最初の DBA にマークされている ※上記の[例]でいうと、DBA=10 が HWM DBA である場合です。 [原因] 上記の条件で select 文実行時に HWM がマークされているデータブロックに アクセスする処理において、内部関数が誤った HWM DBA 情報を返してしまう ことが原因です。この結果、正しいブロックにアクセスできずに、以下の いずれかのエラーが発生します。 a) ORA-08103: object no longer exists b) ORA-00600: internal error code, arguments: [kcbgtcr_12], [1] c) ORA-01410: invalid ROWID 修正リリースにおいて、正しい HWM DBA 情報を返すように 問題の関数を修正しました。 [回避策] ローカル管理表領域 + 自動セグメント領域管理の組合せを使用しない。 (例:ローカル管理表領域上の表を全てマニュアルセグメント領域管理で作成する) [障害発生時の対処] 回避策、もしくはPSRの適用にて対応してください。