データベース統計情報の収集
データベース統計情報を収集と対象リストを抽出する方法
GATHER_DATABASE_STATS パッケージには、スキーマ単位の統計収集パッケージと同様に収集とリスト取得の 2つの機能がある。
統計情報の収集 (DBMS_STATS) に戻る。
データベース統計情報の収集
データベース(≒インスタンス)全体にわたり、OPTIONS に指定した方法で統計情報を収集する。
基本的なパラメータ
DBMS_STATS.GATHER_DATABASE_STATS (
OPTIONS => 'オプション'
,ESTIMATE_PERCENT => 'サンプルレート'
,BLOCK_SAMPLE => 'サンプルレート(block)'
,DEGREE => '並列度'
,GRANULARITY => 'パーティション表オプション'
,CASCADE => 'インデックス統計 有無'
以下 略
) ;
BEGIN
DBMS_STATS.GATHER_DATABASE_STATS (
OPTIONS => 'GATHER'
,CASCADE => TRUE
) ;
END;
/
options には 以下の指定が可能
- GATHER
- すべてのオブジェクトの統計情報を取得する。
- GATHER AUTO
- Oracle が 必要と判断したオブジェクトの統計情報を取得する。
GATHER AUTOを指定した場合、ここで説明しているパラメータは無視される。有効なパラメータは、stattab、statid、statown、objlist のみ
- GATHER STALE
- DBA_TAB_MODIFICATIONS のリストの内容から判別して取得する(10%の変動があると対象になるらしい:未検証)。
- GATHER_EMPTY
- 統計情報が存在しないオブジェクトの統計情報を取得する。
統計情報に関するリストの取得 (DBMS_STATS.GATHER_SCHEMA_STATSと同じ)
統計情報に関する以下のリストを取得する。
- 統計情報が存在しないリスト
- GATHER AUTO' の対象となるリスト
- DBA_TAB_MODIFICATIONS による失効と判断されたリスト
SET SERVEROUTPUT ON SIZE 1000000
DECLARE
vMsg VARCHAR(250);
vList DBMS_STATS.OBJECTTAB;
BEGIN
DBMS_STATS.GATHER_DATABASE_STATS(
OPTIONS => 'LIST EMPTY'
,OBJLIST => vList
);
FOR i IN 1..vList.COUNT LOOP
vMsg := vList(i).OWNNAME;
vMsg := vMsg || ',' || vList(i).OBJTYPE;
vMsg := vMsg || ',' || vList(i).OBJNAME;
vMsg := vMsg || ',' || vList(i).PARTNAME;
vMsg := vMsg || ',' || vList(i).SUBPARTNAME;
-- vMsg := vMsg || ',' || vList(i).CONFIDENCE;
-- (パッケージ定義に未使用項目とある)
DBMS_OUTPUT.PUT_LINE(vMsg);
END LOOP;
END;
/
options には 以下の指定が可能
- LIST EMPTY
- 統計情報が存在しないリストを OBJLIST に取得する。
- LIST AUTO
- 'GATHER AUTO' の対象となるリストを OBJLIST に取得する。
- LIST STALE
- DBA_TAB_MODIFICATIONS による失効と判断されたリストを OBJLIST に取得する。
関連事項