大量データのimport後にORA-0600発生

NO IMAGE

Oracleに対して、大量データのimportを行った後にimport対象の
テーブルを結合等でSELECT文を発行すると、ORA-0600が発生したので
対応方法を覚え書き。

どうも大量データのimportを行うと、import前の統計情報と
import後のテーブルの状態がアンマッチとなり、オプティマイザが
正常な実行計画を戻せず、ORA-0600が発生するようです。

対応方法としては、統計情報を再取得することでimport後の統計情報が
取得され、問題なく実行計画を戻せるようになります。

統計情報の再取得を行うには、

ANALYZE TABLE テーブル名 COMPUTE STATISTICS

で1テーブル毎の分析を行い、スキーマ単位で行う場合は、

DBMS_UTILITY.ANALYZE_SCHEMA(‘スキーマ名’,’COMPUTE’);
もしくは、
DBMS_STATS.GATHER_SCHEMA_STATS (‘スキーマ名’,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,’GATHER’);
を実行することで、再取得できます。