ORA-30926エラーのトラブルシューティング方法 (ドキュメントID 471956.1)
1)失敗したステートメントを特定する
セッションセットイベントの変更 '30926トレース名エラースタックレベル3';
または
システム設定イベント「30926トレース名エラースタックオフ」を変更します。
そして、UDUMPが発生したときに.trcファイルを監視します。
2)SQLステートメントを見つけたら、それが正しいかどうか(おそらく、Explain Planまたはtkprofを使用してクエリ実行プランをチェックします)を確認し、これが最近行われていない場合は、関連するテーブルの統計を分析または計算します。インデックスの再構築(または削除/再作成)も役立つ場合があります。
3.1)SQLステートメントはMERGEですか?USING句によって返されたデータを評価して、結合に重複する値がないことを確認します。マージステートメントを変更して、確定的なwhere句を含めます。
3.2)これはビューを介したUPDATEステートメントですか?その場合は、ビューの結果をテーブルに入力して、テーブルを直接更新してみてください。
3.3)テーブルにトリガーはありますか?それを無効にして、まだ失敗するかどうかを確認してください。
3.4)ステートメントの「INサブクエリ」にマージ不可能なビューが含まれていますか?これにより、クエリに「FOR UPDATE」句が含まれている場合、重複した行が返される可能性があります。バグ2681037を参照
3.5)テーブルには未使用の列がありますか?これらを削除すると、エラーを防ぐことができます。
4)SQLを変更してもエラーが解決されない場合、問題はテーブルにある可能性があり、特に連鎖行がある場合はそうです。4.1)SQLで使用されるすべてのテーブルで「ANALYZE TABLE VALIDATE STRUCTURE CASCADE」ステートメントを実行して、テーブルまたはそのインデックスに破損がないかどうかを確認します。4.2)テーブル上のチェーンまたは移行されたROWSを確認して削除します。PCTFREEの正しい設定など、これを最小限に抑える方法があります。Note 122020.1-行の連鎖と移行を使用してください4.3)テーブルがさらにインデックス編成されている場合は、次を参照してください:Note 102932.1-IOTでの連鎖された行の監視