oracle

データベース内全てのオブジェクトに関する統計情報を取得

データベース内全ての統計情報取得(システム統計を除くオプティマイザ統計の取得)を行います。

GATHER_DATABASE_STATS データベース単位で統計情報を取得

こちらは時間がかかるので実行する際にはご注意ください。

begin
DBMS_STATS.GATHER_DATABASE_STATS (
 OPTIONS   => 'GATHER AUTO'
,DEGREE    => 2
,CASCADE   => TRUE
);
end;
  • OPTIONS
    1. GATHER
      • データベース内のすべてのオブジェクトに関する統計情報を収集します。
    2. GATHER AUTO
      • 必要な統計情報をすべて自動的に収集します。Oracleは、新しい統計情報を必要とするオブジェクトを暗黙的に判別し、その統計情報を収集する方法を判別します。
    3. LIST AUTO
      • GATHER AUTOを使用して処理されるオブジェクトのリストを戻します。
    4. LIST STALE
      • *_tab_modificationsビューを調べて判別した失効オブジェクトのリストを戻します。
  • DEGREE:並列度
  • CASCADE: TRUE 索引についても統計情報を収集します。

DELETE_DATABASE_STATS データベース単位で統計情報を削除

システム統計を除き、オプティマイザ統計全てを削除します。(表統計、列統計、索引統計、固定統計)

begin
 DBMS_STATS.DELETE_DATABASE_STATS();
end;

指定のスキーマ内全ての統計情報取得

スキーマ単位ぐらいで様子みながら実行したほうが良いかもしれません。

begin
DBMS_STATS.GATHER_SCHEMA_STATS (
 ownname => 'SCOTT'
);
end;

パラメータを多く使わないならexecコマンドにて実行してもいいですね。(上記と同じ意味です)

exec DBMS_STATS.GATHER_SCHEMA_STATS ('SCOTT')
;

指定のスキーマ内全ての統計情報削除

begin
DBMS_STATS.DELETE_SCHEMA_STATS (
 ownname => 'SCOTT'
);
end;
表統計、列統計の取得削除は以下です
スポンサーリンク