レック・テクノロジー・コンサルティング株式会社TECH BLOG

今Oracleどうなってるの? 情報源その3:動的パフォーマンス・ビュー

初めましての方もそうでない方も宜しくお願い致します。
レック・テクノロジー・コンサルティングのエンジニア「佐々木」にございます。

前回は、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)について説明させて頂きます。

以上、宜しくお願い致します。

この記事をシェアする

  • Facebook
  • X
  • Pocket
  • Line
  • Hatena
  • Linkedin

資料請求・お問い合わせはこちら

ページトップへ戻る