Oracleでは、10gから統計情報が自動収集されるようになりました。
統計情報が自動収集されることで、データ量増減によるSQL処理時間の変動は軽減されるようになりました。
しかし、予期せずSQL処理時間が長くなることも…
統計情報というものが完全なものではないため、統計情報の自動収集後から、処理の遅くなる事態が発生することがあります。
このような事態が発生した場合には、統計情報を再取得すれば解決するはずです。
ですが、「突然」は困るので、特定のテーブルだけ統計情報を収集しない方法があります。
統計情報の自動収集を止めたテーブルは、特定日に手動での収集を実施する運用がベストかと。
統計情報ロック
exec dbms_stats.lock_table_stats('スキーマ名', 'テーブル名');
統計情報ロック解除
exec dbms_stats.unlock_table_stats('スキーマ名', 'テーブル名');
統計情報ロック確認
select TABLE_NAME ,STATTYPE_LOCKED from USER_TAB_STATISTICS
統計情報取得日時確認
select a.TABLE_NAME, a.LAST_ANALYZED
from user_tables;