oracleの自動オプティマイザ統計収集はジョブスケジューラに登録されているので
そのジョブを無効にすることにより統計情報の自動収集をやめることができる。
統計情報の自動収集を無効にする。
exec DBMS_SCHEDULER.DISABLE('GATHER_STATS_JOB');
ジョブスケジュールに登録されているジョブを調べる(GATHER_STATS_JOBが自動統計情報を示す)
select JOB_NAME ,ENABLED from DBA_SCHEDULER_JOBS;
また、以下のSQLでテーブルごとに自動収集の有効・無効を指定することもできる。
指定したテーブルのみ自動統計情報を無効にする。
exec dbms_stats.lock_table_stats('SCOTT','tblHoge');
指定したテーブルのみ自動統計情報を有効にする。
exec dbms_stats.unlock_table_stats('SCOTT','tblHoge');
テーブルごとの自動統計情報収集の有効・無効を確認するSQL。
select TABLE_NAME ,STATTYPE_LOCKED from USER_TAB_STATISTICS;
動作確認環境:oracle 10g