初めましての方もそうでない方も宜しくお願い致します。
レック・テクノロジー・コンサルティングのエンジニア「佐々木」にございます。
前回は、Oracleデータベース(以下、Oracle)の構成情報等、明示的に登録や変更を行った結果、
情報が格納されるデータ・ディクショナリ・ビューについて説明致しました。
今回は、データベース稼動状況確認の際に参照する動的パフォーマンス・ビューにつきまして、以下の通り説明させて頂きます。
・動的パフォーマンス・ビューとは?
・動的パフォーマンス・ビューで確認できる情報は?
・問合せる際の注意
・覚えておきたい動的パフォーマンス・ビュー
動的パフォーマンス・ビューとは?
Oracleはオープン※し使用され続けている間、特別なビューに稼動に関する情報を格納します。
このビューは
リアルタイムに更新されるため「
動的パフォーマンス・ビュー」と呼ばれます。
※詳細は「
Oracleのファイルと起動」の回を参照
動的パフォーマンス・ビューはV$○○という形式で命名され、SYSユーザーまたはSYSDBAロールが付与されているユーザーのみがアクセスできます。
動的パフォーマンス・ビューで確認できる情報は?
上記、あるいは名前の通りではありますが、
動的パフォーマンス・ビューからは
現在のパフォーマンス状況を把握するための情報を参照できます。
例えば、
・現在接続しているセッションの把握
SQL> select sid, username, status, osuser, process, machine, program from v$session;
SID USERNAME STATUS OSUSER PROCESS MACHINE PROGRAM
---------- ------------------------------ -------- ------------------------------ ------------ ---------------------------------------------------------------- ------------------
148 ACTIVE SYSTEM 136 QAT-3LDR461E7HW ORACLE.EXE (q000)
150 ACTIVE SYSTEM 5548 QAT-3LDR461E7HW ORACLE.EXE (q001)
170 ACTIVE SYSTEM 5880 QAT-3LDR461E7HW ORACLE.EXE (PMON)
・
・
・
・長時間実行されているSQLの特定
SQL> select cpu_text, sql_text from v$sql;
CPU_TIME SQL_TEXT
------------------------------------------------------------------------------------------------
2595 select col#,intcol#,charsetid,charsetform from col$ where obj#=:1 order by intcol# asc
・
・
・
・現在までのメモリ使用状況の確認
SQL> select * from v$pgastat;
NAME VALUE UNIT
---------------------------------------------------------------- ---------- -----
aggregate PGA target parameter 203423744 bytes
aggregate PGA auto target 173684736 bytes
global memory bound 40684544 bytes
total PGA inuse 10507264 bytes
・
・
・
SQL> select * from v$sgastat;
POOL NAME BYTES
------------ -------------------------- ----------
fixed_sga 1250428
buffer_cache 427819008
log_buffer 7135232
shared pool dpslut_kfdsg 256
shared pool hot latch diagnostics 80
shared pool ENQUEUE STATS 8360
shared pool transaction 264528
shared pool KCB buffer wait statistic 3352
shared pool invalid low rba queue 1280
shared pool KQF optimizer stats table 2396
shared pool CCursor 2033592
・
・
・
・REDOログファイルの状態確認
SQL> select * from v$log;
GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARC STATUS FIRST_CHANGE# FIRST_TI
---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- --------
1 1 2 52428800 1 NO INACTIVE 568387 12-02-17
2 1 3 52428800 1 NO CURRENT 574301 12-02-17
3 1 1 52428800 1 NO INACTIVE 534907 12-02-17
SQL> select * from v$logfile;
GROUP# STATUS TYPE MEMBER
---------- ------- ------- -----------------------------------------------------------------------
3 ONLINE J:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO03.LOG
2 ONLINE J:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO02.LOG
1 ONLINE J:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO01.LOG
・現在取得されているロック情報
SQL> select * from v$lock;
ADDR KADDR SID TY ID1 ID2 LMODE REQUEST CTIME BLOCK
-------- -------- ---------- -- ---------- ---------- ---------- ---------- ---------- ----------
33834244 33834258 165 XR 4 0 1 0 3042 0
338342A0 338342B4 165 CF 0 0 2 0 3042 0
33834358 3383436C 165 RS 25 1 2 0 3036 0
33834410 33834424 166 RT 1 0 6 0 3036 0
3383446C 33834480 167 PW 1 0 3 0 3033 0
33834580 33834594 167 MR 1 0 4 0 3036 0
338345DC 338345F0 167 MR 2 0 4 0 3036 0
33834638 3383464C 167 MR 3 0 4 0 3036 0
等を調査する際に、動的パフォーマンス・ビューを参照します。
問合せる際の注意
・動的パフォーマンス・ビューでサポートされているのは、単純な問合せのみ
スクリプトで監視する際等、結合やgroup by、ソート処理が日常的に実施されていますが、これらは正式にサポートされておりません。もし結合やgroup byでの参照する場合には、「create table xxx as select~」の実行等でデータを複製しそちらでselectを発行することとなります。
・表示される値は、その時点までの累積値
V$には、オープンされてから問合せるまでの稼動情報が全て反映された形で格納されています。
そのため、ただ単発で問合せただけではパフォーマンスの変化を把握することは難しいものとなります。ピーク時間帯やあるSQLを実行したタイミング等、確認したい事象に関して前後二点でV$ビューを問合せ、その差分を確認する必要があります。
覚えておきたい動的パフォーマンス・ビュー
本項では、稼働状況の確認などで使用する基本的な動的パフォーマンス・ビューを紹介致します。
・v$bgprocess
バックグラウンド・プロセスに関する情報を表示します。
・v$database
制御ファイルからのデータベースに関する情報を表示します。
・v$datafile
制御ファイルからのデータ・ファイル情報を表示します。
・v$lock
現在Oracle データベースによって保持されているロック、およびロックまたは
ラッチに対する未処理の要求を表示します。
・v$pga_target_advice
PGA_AGGREGATE_TARGET パラメータの値が変更された場合に、パフォーマンスがどの程度上下するかの予測値を表示します。
・v$pgastat
PGA メモリー使用統計と、自動PGA メモリー・マネージャに関する統計を表示します。
・v$process
現在アクティブなプロセスの情報を表示します。
・v$session
カレント・セッションごとのセッション情報を表示します。
・v$session_event
セッションごとのイベントの待機情報を表示します。
・v$session_wait
アクティブ・セッションが待機しているリソースまたはイベントを表示します。
・v$sesstat
ユーザー・セッションについての統計情報を表示します。
・v$sga
システム・グローバル領域(SGA)のサマリー情報を表示します。
・v$sgastat
システム・グローバル領域(SGA)の詳細情報を示します。
・v$sql
共有SQL領域についての統計情報を表示します。
・v$sqlplan
ライブラリ・キャッシュにロードされる子カーソルごとの実行計画情報を表示します。
・v$sysstat
システム全体の統計情報を表示します。
・v$system_event
イベントの待機の合計の情報を表示します。
・v$transaction
システム内のアクティブ・トランザクションに関する情報を表示します。
※動的パフォーマンス・ビューの列等、詳細については「リファレンス」マニュアルに記載があります。
まとめ
・動的パフォーマンス・ビューには、Oracleが
オープンされてからの稼動情報が累積的に格納されています。
・特定の時間帯や特定のSQL文などのパフォーマンスを把握するには、前後二点でV$ビューを問合せ、差分を取得する必要があります。
最後に
今回は、Oracleの稼動状況を把握する際に使用する動的パフォーマンス・ビューについてご紹介しました。最後のビュー一覧につきましては一旦眺める程度でいざ必要になった際にマニュアルと併せて詳細を確認頂くのが楽かも知れません。
なお、今回で情報源シリーズは終了となります。
次回はOracleが使用するメモリ領域(SGA)について説明させて頂きます。
以上、宜しくお願い致します。