ORA-30926エラーのトラブルシューティング方法は?(Doc ID 471956.1)
1)失敗したステートメントを特定する
セッションセットイベントの変更'30926トレース名エラースタックレベル3';
また
システム設定イベントの変更'30926トレース名エラースタックオフ';
UDUMPで.trcファイルが発生した場合はそれを監視します。
2)SQLステートメントを見つけたら、それが正しいかどうかを確認し(おそらく、explainプランまたは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で使用されるすべてのテーブルに対して「ANALYZETABLE VALIDATE STRUCTURE CASCADE」ステートメントを実行して、テーブルまたはそのインデックスに破損がないかどうかを確認します。4.2)テーブル上のCHAINEDまたは移行されたROWSを確認し、排除します。PCTFREEを正しく設定するなど、これを最小限に抑える方法があります。ノート122020.1を使用-行の連鎖と移行4.3)テーブルがさらにインデックス編成されている場合は、以下を参照してください。ノート102932.1-IOTでの連鎖行の監視