0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Oracle Database 統計情報取得オプションの変遷

Last updated at Posted at 2025-07-23

オプティマイザ統計の取得プロシージャのプリファレンス

 Oracle Database 10g 以降、オプティマイザ統計を自動的に収集するジョブが実行されます。自動実行ジョブは DBMS_STATS パッケージの GATHER_DATABASE_STATS_JOB_PROC プロシージャが実行されます。データベース全体の統計情報を取得する場合には GATHER_DATABASE_STATS プロシージャが利用されます。これらのプロシージャが統計情報を取得する時に使用する様々なプリファレンスが定義されており、DBMS_STATS パッケージの SET_GLOBAL_PREFS プロシージャで変更することができます。

オプションの確認と設定
SQL> EXECUTE DBMS_STATS.SET_GLOBAL_PREFS('ESTIMATE_PERCENT', 10);

PL/SQL procedure successfully completed.

SQL> SELECT DBMS_STATS.GET_PREFS('ESTIMATE_PERCENT') FROM DUAL;

DBMS_STATS.GET_PREFS('ESTIMATE_PERCENT')
--------------------------------------------------------------------------------
10

本記事では統計情報取得プロシージャのプリファレンスについて、Oracle Database のバージョンによる変化を確認し、Oracle Database 11g 以降に追加された代表的なオプションの説明を記述しています。

DBMS_STATS パッケージの変遷

DBMS_STATS パッケージの SET_GLOBAL_PREFS プロシージャで指定できる値をバージョン毎に記載しています。旧バージョンで使用できたパラメーターが使えなくなることはありませんが、バージョンが進むにつれて使用できる値が増えています。

パラメーター名 11g(11.2) 12c(12.1) 12c(12.2) 18c(18) 19c(19) 21c(21) 23ai(23) 備考
APPROXIMATE_NDV_ALGORITHM - -
AUTOSTATS_TARGET
AUTO_STAT_EXTENSIONS - -
AUTO_TASK_INTERVAL - - - - Exadata 専用
AUTO_TASK_MAX_RUN_TIME - - - - Exadata 専用
AUTO_TASK_STATUS - - - - Exadata 専用
CASCADE
CONCURRENT -
DEGREE
ESTIMATE_PERCENT
GLOBAL_TEMP_TABLE_STATS -
GRANULARITY
INCREMENTAL
INCREMENTAL_LEVEL -
INCREMENTAL_STALENESS -
METHOD_OPT
NO_INVALIDATE
OPTIONS -
PREFERENCE_OVERRIDES_PARAMETER - -
PUBLISH
STALE_PERCENT
STAT_CATEGORY - -
TABLE_CACHED_BLOCKS -
WAIT_TIME_TO_UPDATE_STATS - -

追加されたプリファレンスの説明

APPROXIMATE_NDV_ALGORITHM

 シノプシス生成アルゴリズムを指定します。次の値を指定できます。

設定値 説明 備考
REPEAT OR HYPERLOGLOG INCREMENTAL の指定により、適用サンプリングと HyperLogLog を切替 デフォルト
ADAPTIVE SAMPLING 適応サンプリング・アルゴリズムを使用 保守的な設定
HYPERLOGLOG HyperLogLogアルゴリズムを使用

AUTO_STAT_EXTENSIONS

列グループ統計の自動作成を行う場合には ON に設定します。デフォルト値は OFF です。

AUTO_TASK_STATUS, AUTO_TASK_MAX_RUN_TIME, AUTO_TASK_INTERVAL

 3つのプリファレンスは高頻度オプティマイザ統計を利用する場合の設定です。デフォルトの1日1回ではなく、15分間隔(デフォルト)で統計情報の収集を行うことができます。Exadata システム専用のプリファレンスです。

プリファレンス名 デフォルト値 説明
AUTO_TASK_STATUS OFF 高頻度オプティマイザ統計を使用するか? 有効化する場合は ON に設定
AUTO_TASK_MAX_RUN_TIME 3600 高頻度オプティマイザ統計ジョブの最大時間(秒)
AUTO_TASK_INTERVAL 900 高頻度オプティマイザ統計ジョブの実行間隔(秒)

CONCURRENT

 複数のオブジェクトの統計情報を並列に取得する設定です。DEGREEプリファレンスはパラレル・クエリーの設定ですが、CONCURRENT は統計情報取得処理自体を並列化します。一時的にリソース使用量が増加する可能性があるため、Resource Manager の機能で負荷を調整します。

設定値 説明 備考
MANUAL 手動実行時のみ並列実行
AUTOMATIC 自動実行時のみ並列実行
ALL 常に並列実行
OFF 並列実行しない デフォルト

INCREMENTAL_STALENESS, INCREMENTAL_LEVEL

 これらは INCREMENTAL プリファレンスが TRUE に設定(デフォルト FALSE)された場合の動作を決定します。

プリファレンス名 デフォルト値 説明
INCREMENTAL_STALENESS ALLOW_MIXED_FORMAT パーティションまたはサブパーティションが失効したとみなされる状況を指定
INCREMENTAL_LEVEL PARTITION どのシノプシスを収集するかを制御する

OPTIONS

DBMS_STATS.GATHER_TABLE_STATS プロシージャの options パラメーターに指定する値を設定します。

PREFERENCE_OVERRIDES_PARAMETER

パラメーターの入力値をプリファレンス値で上書きするかを指定指定します。デフォルト値は FALSE です。

STAT_CATEGORY

インポートまたはエクスポートするカテゴリーを指定します。以下の値を設定できます。

設定値 説明 備考
OBJECT_STATS 表、列、索引の統計 デフォルト
SYNOPSES 増分統計
REALTIME_STATS リアルタイム統計 デフォルト

TABLE_CACHED_BLOCKS

索引のクラスタリング要因の計算に使用されるバッファ・キャッシュに載るブロック数の推定値を設定します。デフォルト値は 1 です。

WAIT_TIME_TO_UPDATE_STATS

統計情報の更新に必要なロックのタイムアウト分数を指定します。デフォルトは15(分)です。

マニュアル

Oracle Database PL/SQLパッケージおよびタイプ・リファレンス (11.2) DBMS_STATS
Oracle Database PL/SQLパッケージおよびタイプ・リファレンス (12.1) DBMS_STATS
Oracle Database PL/SQLパッケージおよびタイプ・リファレンス (12.2) DBMS_STATS
Oracle Database PL/SQLパッケージおよびタイプ・リファレンス (18) DBMS_STATS
Oracle Database PL/SQLパッケージおよびタイプ・リファレンス (19) DBMS_STATS
Oracle Database PL/SQLパッケージおよびタイプ・リファレンス (21) DBMS_STATS
Oracle Database PL/SQLパッケージおよびタイプ・リファレンス (23) DBMS_STATS

Author: Noriyoshi Shinoda / Date: July 23, 2025

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?