• 検索結果がありません。

V$SQL_PLAN

ドキュメント内 [ D-4 ] Oracle9i Database (ページ 35-44)

• 実行計画をわざわざ取らなくても、データディクショ ナリを直接見ることによって、実行計画や統計情 報を取得できる。

• EXPLAIN PLAN などでは、実際の実行計画と同 じとは限らない。 ALTER SESSION などで、実行 計画に影響のあるパラメータが変更されている 可能性があるため。

• V$SQLAREA や V$SQL などから、調査する SQL

を絞り込む。

問題のある SQL 文をピックアップする

• バッファ数が多い TOP5

• ディスク読み取りが多い TOP5

SELECT *

FROM (SELECT buffer_gets,address,hash_value sql_text FROM V$SQLAREA

ORDER BY buffer_gets DESC) WHERE ROWNUM < 6;

SELECT *

FROM (SELECT buffer_gets,address,hash_value sql_text FROM V$SQLAREA

ORDER BY buffer_gets DESC) WHERE ROWNUM < 6;

SELECT *

FROM (SELECT buffer_gets,address,hash_value sql_text FROM V$SQLAREA

ORDER BY buffer_gets DESC) WHERE ROWNUM < 6;

SELECT *

FROM (SELECT buffer_gets,address,hash_value sql_text FROM V$SQLAREA

ORDER BY buffer_gets DESC) WHERE ROWNUM < 6;

hash_valueaddress をもとに検索

column id format 999 newline column operation format a20 column options format a15

column object_name format a22 trunc column optimizer format a3 trunc

SELECT id , lpad (' ', depth) || operation operation, options , object_name, optimizer, cost FROM V$SQL_PLAN

WHERE hash_value = 817628907 AND address = '5765E0DC' START WITH id = 0 CONNECT BY

( prior id = parent_id

AND prior hash_value = hash_value

AND prior child_number = child_number ) ORDER SIBLINGS BY id, position;

column id format 999 newline column operation format a20 column options format a15

column object_name format a22 trunc column optimizer format a3 trunc

SELECT id , lpad (' ', depth) || operation operation, options , object_name, optimizer, cost FROM V$SQL_PLAN

WHERE hash_value = 817628907 AND address = '5765E0DC' START WITH id = 0 CONNECT BY

( prior id = parent_id

AND prior hash_value = hash_value

AND prior child_number = child_number ) ORDER SIBLINGS BY id, position;

  

出力結果

• これはシンプルな結果だが、 SQL を変更す れば、自分の取りたい情報を表示できる。

ID OPERATION OPTIONS OBJECT_NAME OPT COST ---- --- -- ---

---0 SELECT STATEMENT CHO 1 TABLE ACCESS FULL DEPT

ID OPERATION OPTIONS OBJECT_NAME OPT COST ---- --- -- ---

---0 SELECT STATEMENT CHO 1 TABLE ACCESS FULL DEPT

UNDO 表領域

• UNDO

表領域とは

ロールバックデータを格納する領域。ロールバックセグメン トの後継。

– Oracle9i DB

は、起動時に

2

つのモードを選べる。

• 2

つのモード(

undo_management

パラメータで設定)

自動UNDO管理モード(auto

• Undo領域を使用する。

ロールバックセグメントUNDOモード(manual

ロールバックセグメントを使用する。

• undo_retention

パラメータで保存期間を制御可能。

• UNDO

表領域の作成

– CREATE DATABASE文、CREATE UNDO TABLESPACE

• UNDO

表領域の設定

– UNDO_TABLESPACE

Undo 領域の使用状況

• Undo の使用状況

• V$UNDOSTAT ビュー

ロールバックセグメント の統計情報を格納

使用した

UNDO

表領域、

UNDO

ブロック数、トラ ンザクション数など

統計情報から最適な

UNDO

表領域を設定

統計情報の収集

ANALYZE

は古い〜

完全に計算

– DBMS_STATS.GATHER_TABLE_STATS('SCOTT','EMP')

• 10%

サンプル

– DBMS_STATS.GATHER_TABLE_STATS('SCOTT','EMP',esti mate_percent=>10)

• SCOTT

スキーマのオブジェクトを

10%

サンプル

– DBMS_STATS.GATHER_SCHEMA_STATS('SCOTT',10,option s=>'GATHER')

統計情報を削除

– DBMS_STATS.DELETE_TABLE_STATS('SCOTT','EMP')

効率的な統計情報収集

Oracle8i

からの機能〜

1. Monitoring

開始

2.

変更を加えたオブジェクトは、

user_tab_modifications

にリ ストされる

3.

GATHER STALE

」を指定すると、前回から変更された オブジェクトだけの統計情報を更新する

ALTER TABLE emp MONITORING;

ALTER TABLE emp MONITORING;

SELECT * FROM user_tab_modifications;

SELECT * FROM user_tab_modifications;

BEGIN

DBMS_STATS.GATHER_SCHEMA_STATS('SCOTT', options=>'GATHER STALE');

END;

/

BEGIN

DBMS_STATS.GATHER_SCHEMA_STATS('SCOTT', options=>'GATHER STALE');

END;

/

データベース・データ収集ツール

~

これからは

Statspack

がお勧め

~

• BSTAT/ESTAT

スクリプト

– $ORACLE_HOME/rdbms/admin/UTLBSTAT.SQL,UTLESTAT.SQL

• Statspack

– BSTAT/ESTATの基いているが、データベース内のすべての統計情報

を格納するようにデータ獲得が拡張

– BSTAT/ESTATよりも詳細な情報が取得できる

使用するためには、Statspackをインストールする必要がある SQL connect / as sysdba

SQL @?/rdbms/admin/spcreate – スナップショットの作成

SQL connect perfstat/perfstat SQL execute statspack.snap:

レポートの出力

SQL connect / as sysdba

SQL @?/rdbms/admin/spreport

ドキュメント内 [ D-4 ] Oracle9i Database (ページ 35-44)

関連したドキュメント