Oracle中心にIT全般の技術情報を気が向くままに書いています。他にLinux、仮想化技術(VMWare)やトラブルに役立つ情報などがあります。

スポンサーサイト統計情報を手動で取得する


上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
統計情報を手動で取得します。
デフォルトの自動統計収集と比べて,より適切なタイミングで統計情報更新を行うことが可能となります。

統計情報の手動取得方法には下記の種類があります。
・8i以前で利用されてきたANALYZEコマンドを利用する方法
・9i以降で追加されたDBMS_STATSパッケージを利用する方法

analyzeコマンドについては,新たに追加された機能が利用できなかったり,統計情報のリストア(DBMS_STATS.RESTORE_DATABASE_STATS)ができなかったりと推奨されません。

【実行した環境】
DB: Oracle 11.1.0.6.0
OS: Oracle Enterprise Linux V5

【実行手順】
例として,TEST01スキーマのTEST1テーブルの統計情報を手動更新してみます。

前回統計情報を取得した日時「LAST_ANALYZED」を確認します。今回は時分秒も表示したかったのでNLS_DATE_FORMATを事前に設定しています。
SQL> ALTER SESSION SET NLS_DATE_FORMAT='YYYY/MM/DD HH24:MI:SS';

セッションが変更されました。

SQL> select owner,table_name,last_analyzed from dba_tab_statistics where owner='TEST01' 
and table_name='TEST1';

OWNER  TABLE_NAME LAST_ANALYZED
------ ---------- ------------------------------ 
TEST01 TEST1      2011/07/17 19:21:37

TEST01スキーマのTEST1テーブルの統計情報を更新します。
SQL> EXECUTE DBMS_STATS.GATHER_TABLE_STATS(ownname=>'TEST01',tabname=>'TEST1');

PL/SQLプロシージャが正常に完了しました。

統計情報の取得日時「LAST_ANALYZED」が更新されているのが分かります。
SQL> select owner,table_name,last_analyzed from dba_tab_statistics where owner='TEST01' 
and table_name='TEST1';

OWNER  TABLE_NAME LAST_ANALYZED
------ ---------- ------------------------------ 
TEST01 TEST1      2011/07/17 19:48:13

以上です。

今回はテーブル単位で統計情報を更新しましたが,他に下記の単位で取得可能です。
・DB単位:DBMS_STATS.GATHER_DATABASE_STATSプロシージャ
・インデックス単位:DBMS_STATS.GATHER_INDEX_STATSプロシージャ
・スキーマ単位:DBMS_STATS.GATHER_SCHEMA_STATSプロシージャ
---------------------------------------------
・システム統計:DBMS_STATS.GATHER_SYSTEM_STATSプロシージャ
・ディクショナリ統計:DBMS_STATS.GATHER_DICTIONARY_STATSプロシージャ

ORACLEのSQLチューニングについて勉強したい




以上です。




トラックバックURL

この記事にトラックバックする(FC2ブログユーザー)



前ページへ:自動統計収集を無効化する
次ページへ:統計情報を固定化する

ページのトップへ

必ずお読みください

本ブログ記事をご利用になって生じたいかなる損害についても当方は一切責任を負いません。
ご利用は自己責任でお願いします。(^―^)

広 告





ブログランキング/その他


ビジネスブログ100選

ブログランキング・にほんブログ村へ
blogramで人気ブログを分析




最新トラックバック


RSSリンクの表示

QRコード

QR

アクセスカウンター

ユニーク:
トータル:


上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。