Oracle チューニング 動的パフォーマンスビュー V$ part1
Oracle において チューニング 動的パフォーマンスビュー とは以下を示します。
- 待機イベント確認
- 実行SQL文のHASH_VALUEを確認
- ロック確認
- SQL文の特定
- 実行計画の取得
- 待機イベントが発生しているブロック特定
1. 待機イベント確認
発生している待機イベントを確認する。確認したら、手順2.のSIDに紐付ける。
SQL> select * from v$session_wait ;
- SID
セッションID
- P1
ファイルID
- P2
ブロックID
2. 実行SQL文のHASH_VALUEを確認
待機イベント発生原因SQL文の SQL_HASH_VALUE を確認する。 また、ROW_WAIT_OBJ# によりオブジェクトIDも確認可能であり、手順3.のID1に紐付ける。
SQL> select * from v$session where SID = "<手順1 SID>";
- SID
- STATUS
- SQL_HASH_VALUE
- ROW_WAIT_OBJ#
オブジェクトID
- ROW_WAIT_FILE#
- RAW_WAIT_BLOCK#
- LOGON_TIME
3. ロック確認
特定したオブジェクトに対するロックの種類を TY により確認できる。
SQL> select * from v$lock where ID1 = "<手順2 ROW_WAIT_OBJ#>" ;
- TY
ロック種類
- ID1
オブジェクトID
4. SQL文の特定
手順2.のSQL_HASH_VALUEより以下のコマンドによりSQL文を特定可能である。 ただし、共有プールに存在しない場合には表示できない。
SQL> select HASH_VALUE, ADDRESS, SQL_TEXT from V$SQL where HASH_VALUE = '<手順2 SQL_HASH_VALUE>' ;
5. 実行計画の取得
下記SQL文にて、手順4.で取得した hash_value、address をWHERE句に代入し 実行計画が取得可能。 ※ただし、共有プールに存在しない場合には表示できない。
- SQL文
column id format 999 newline column operation format a20 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 = <HASH_VALUE> -- ここに 手順4. HASH_VALUE を指定 and address = '<ADDRESS>' -- ここに 手順4. ADDRESS を指定 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;
6. 待機イベントが発生しているブロック特定
手順1.のP1⇒ファイルID、P2⇒ブロックIDをWHERE句に代入する。 待機イベントが発生しているブロック(テーブル名)を確認可能。
SQL> select * from dba_extents where file_id = <手順1. P1> and <手順1. P2> between block_id and block_id + blocks -1;
ご訪問頂き有難う御座います。
当サイトを効率良く使うためにまずは FrontPage を見て下さい。
検索方法、一覧表示などの各情報を纏めています。
当サイトの説明 → Frontpage