Database OracleDB インフラ

OracleDBの統計情報の取得・更新方法「DBMS_STATS.GATHER_XXXX_STATS」を紹介

投稿日:2018年8月8日 更新日:

こんにちは!シミダイ(@shimidai2100)です。

OracleDatabaseの「統計情報」の手動取得方法を紹介します。

OracleDatabaseを運用して上で最も重要な要素の1つです。

この記事でOracleDatabase初心者でも分かりやすく統計情報の取得方法を紹介していますので、「統計情報」をしっかり取得しましょう。

統計情報となにか?については以下のページでまとめてますので、まずは下の参照ください。

OracleDBの統計情報とは?なぜ取得?取得しないことの影響は?

こんにちは!シミダイ(@shimidai2100)です。 OracleDatabaseの「統計情報」とは何か?なぜ取得するのか?運用方法とは?について紹介します。 OracleDatabaseを運用し ...

続きを見る


表統計の取得:DBMS_STATS.GATHER_TABLE_STATS

表統計の取得は「DBMS_STATS.GATHER_TABLE_STATS」で行えます。

7行目の「METHOD_OPT」は、列統計を取得するか設定します。

基本はデフォルト値の「FOR ALL COLUMNS SIZE AUTO」を使用すれば問題ないです。

索引が張られている列に対してのみ列統計を取得する場合は「FOR ALL INDEXED」を設定します。

ちなみに「METHOD_OPT」のデフォルト値を変更する場合、

  • SET_DATABASE_PREFSプロシージャ
  • SET_GLOBAL_PREFSプロシージャ
  • SET_SCHEMA_PREFSプロシージャ
  • SET_TABLE_PREFSプロシージャ

を使用します。

10行目の「CASCADE」は表統計の取得時に合わせて、索引統計も取得するか「True/False」制御します。

以下サンプルになります。

列統計の取得:DBMS_STATS.GATHER_TABLE_STATS

列統計の取得は「DBMS_STATS.GATHER_TABLE_STATS」で行います。

表統計取得のプロシージャと同一なので注意してください。

7行目の「METHOD_OPT」で、「FOR COLUMNS」を指定して列統計を取得します。

以下サンプルになります。

索引統計の取得:DBMS_STATS.GATHER_INDEX_STATS

索引統計の取得は「DBMS_STATS.GATHER_TABLE_STATS」で行います。

8行目の「GRANULARITY」でパーティションの統計をどのように取得するか制御します。

オプション説明
ALLすべての統計情報(サブパーティション、パーティションおよびグローバル)を収集。
AUTOパーティション化のタイプに基づいて細分化を決定します。デフォルト値。
GLOBALグローバルな統計情報を収集しない。
GLOBAL AND PARTITIONグローバルおよびパーティション・レベルの統計情報を収集。
サブパーティション・レベルの統計情報は、それがコンポジット・パーティション・オブジェクトである場合でも収集されない。
PARTITIONパーティション・レベルの統計情報を収集。
SUBPARTITIONサブパーティション・レベルの統計情報を収集。

以下サンプルになります。

スキーマ全体の統計情報取得:DBMS_STATS.GATHER_SCHEMA_STATS

スキーマ全体の統計情報取得は「DBMS_STATS.GATHER_SCHEMA_STATS 」で行えます。

1行目の「OPTIONS」で統計情報取得時のオプションを指定します。

OPTIONS説明
GATHERデフォルト値。スキーマ内のすべてのオブジェクトに関する統計情報を収集します。
GATHER AUTO必要な統計情報をすべて自動的に収集する。自動的に新しい統計情報を必要とするオブジェクトを暗黙的に判別し、その統計情報を収集する方法を判別。
GATHER STALE*_tab_modificationsビューを調べて判別した失効オブジェクトについて、統計情報を収集。
GATHER EMPTY現在統計情報がないオブジェクトについて統計情報を収集。

以下サンプルになります。

データベース統計の取得方法:DBMS_STATS.GATHER_DATABASE_STATS

データベース全体の統計情報取得は「DBMS_STATS.GATHER_DATABASE_STATS 」で行えます。

1行目の「OPTIONS」で統計情報取得時のオプションを指定します。

OPTIONS説明
GATHERデフォルト値。スキーマ内のすべてのオブジェクトに関する統計情報を収集します。
GATHER AUTO必要な統計情報をすべて自動的に収集する。自動的に新しい統計情報を必要とするオブジェクトを暗黙的に判別し、その統計情報を収集する方法を判別。
GATHER STALE*_tab_modificationsビューを調べて判別した失効オブジェクトについて、統計情報を収集。
GATHER EMPTY現在統計情報がないオブジェクトについて統計情報を収集。

以下サンプルになります。

システム統計の取得:DBMS_STATS.GATHER_SYSTEM_STATS

システム統計情報取得は「DBMS_STATS.GATHER_SYSTEM_STATS 」で行えます。

システム統計の取得タイミングは「DB構築後」と「表領域作成後」になります。

以下サンプルになります。

ディクショナリ統計の取得方法:DBMS_STATS.GATHER_DICTIONARY_STATS

ディクショナリ統計の取得は「DBMS_STATS.GATHER_DICTIONARY_STATS」で行えます。

オプションは表統計・データベース統計取得と同一のものを使用します。

以下サンプルになります。

固定表統計の取得方法:DBMS_STATS.GATHER_FIXED_OBJECTS_STATS

固定表の統計の取得は「DBMS_STATS.GATHER_FIXED_OBJECTS_STATS」で行えます。

固定表の統計情報取得は「パッチ適用後」や「オブジェクトの大量作成後」に行いましょう。

以下サンプルになります。

参考マニュアル

「DBMS_STATS」は指定できるオプション数が多いので本記事は重要な部分のみ記載しました。

必要に応じてマニュアルを確認して最適な設定を行いましょう。

参考12cのDBMS_STATSマニュアル

 

スポンサードリンク

関連記事

-Database, OracleDB, インフラ

Translate »

Copyright© shimidai2100 , 2018 All Rights Reserved.