データベース統計情報の収集

データベース統計情報を収集と対象リストを抽出する方法
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 に取得する。


関連事項

日本オラクル
■ 日本オラクル 株式会社
■ オラクルマスター資格 (オラクルマスターとは
■ オラクルサポートセンター