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

スポンサーサイト統計情報を固定化する


上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
統計情報を固定化したい場合があります。
例えば,データの変動がある場合等で,都合の良いタイミングで統計情報を取得し固定化することで最適なSQL実行計画にすることができます。

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

(1) 指定した表の統計情報をロックする
(2) 指定した表の統計情報ロックを解除する
(3) 指定したスキーマのすべての表の統計情報をロックする
(4) 指定したスキーマの統計情報ロックを解除する

【実行手順】
(1) 指定した表の統計情報をロックする
TEST01スキーマのTEST1テーブル統計情報のロック状態を確認すると統計ロックのタイプ「STATTYPE_LOCKED」には何も設定されていません。
SQL> select owner,table_name,stattype_locked from dba_tab_statistics where owner='test01' 
and table_name='TEST1';

OWNER  TABLE_NAME STATTYPE_LOCKED
------ ---------- --------------- 
TEST01 TEST1      

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

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

統計ロックのタイプ「STATTYPE_LOCKED」を確認するとALLとなっており統計がロックされたのが分かります。
SQL> select owner,table_name,stattype_locked from dba_tab_statistics where owner='test01' 
and table_name='TEST1';

OWNER  TABLE_NAME STATTYPE_LOCKED
------ ---------- --------------- 
TEST01 TEST1      ALL


(2) 指定した表の統計情報ロックを解除する
TEST01スキーマのTEST1テーブルの統計情報ロックを解除します。
SQL> EXECUTE DBMS_STATS.UNLOCK_TABLE_STATS(ownname=>'TEST01',tabname=>'TEST1');

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

統計ロックのタイプ「STATTYPE_LOCKED」を確認すると未設定状態に戻ったのが分かります。
SQL> select owner,table_name,stattype_locked from dba_tab_statistics where owner='test01' 
and table_name='TEST1';

OWNER  TABLE_NAME STATTYPE_LOCKED
------ ---------- --------------- 
TEST01 TEST1      


(3) 指定したスキーマのすべての表の統計情報をロックする
TEST01スキーマの全表のテーブル統計情報ロック状態を確認すると統計ロックのタイプ「STATTYPE_LOCKED」には何も設定されていません。
SQL> select owner,table_name,stattype_locked from dba_tab_statistics where owner='TEST01';

OWNER  TABLE_NAME STATTYPE_LOCKED
------ ---------- --------------- 
TEST01 EMP
TEST01 TABLE1
TEST01 TEST1

TEST01スキーマで定義されたすべての表の統計情報をロックします。
SQL> EXECUTE DBMS_STATS.LOCK_SCHEMA_STATS(ownname=>'TEST01');

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

統計ロックのタイプ「STATTYPE_LOCKED」を確認すると全ての表がALLとなっており統計がロックされたのが分かります。
SQL> select owner,table_name,stattype_locked from dba_tab_statistics where owner='TEST01';

OWNER  TABLE_NAME STATTYPE_LOCKED
------ ---------- --------------- 
TEST01 EMP        ALL
TEST01 TABLE1     ALL
TEST01 TEST1      ALL


(4) 指定したスキーマの統計情報ロックを解除する
TEST01スキーマの統計情報ロックを解除します。
SQL> EXECUTE DBMS_STATS.UNLOCK_SCHEMA_STATS(ownname=>'TEST01');

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

統計ロックのタイプ「STATTYPE_LOCKED」を確認すると未設定状態に戻ったのが分かります。
SQL> select owner,table_name,stattype_locked from dba_tab_statistics where owner='TEST01';

OWNER  TABLE_NAME STATTYPE_LOCKED
------ ---------- --------------- 
TEST01 EMP
TEST01 TABLE1
TEST01 TEST1


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




以上です。




トラックバックURL

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



前ページへ:統計情報を手動で取得する
次ページへ:SQLPlus Select結果のフォーマットを指定する

ページのトップへ

必ずお読みください

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

広 告





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


ビジネスブログ100選

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




最新トラックバック


RSSリンクの表示

QRコード

QR

アクセスカウンター

ユニーク:
トータル:


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