...

簡単シリーズ スナップショット・モニター編 2004/03

by user

on
Category: Documents
93

views

Report

Comments

Transcript

簡単シリーズ スナップショット・モニター編 2004/03
簡単シリーズ
スナップショット・モニター編
2004/03
目次
■
■
■
■
■
■
■
データベース・モニター・ツール
スナップショット・モニター
スナップショット・モニターの取得
スナップショット・モニター・コマンド
― GET MONITOR SWITCHES
― UPDATE MONITOR SWITCHES
― RESET MONITOR
― GET SNAPSHOT FOR
スナップショット・モニターの取得手順
スナップショット・モニター情報の出力例
スナップショット・モニターSQL表関数
※ この資料ではDB2 UDB for Windows V8.1 + FIXPACK4の環境でテストした結果を載せています。
データベース・モニター・ツール
■
DB2が提供する主なモニター・ツール
SQL文がDB2によって
どのように処理
されるかが知りたい
デッドロックの原因は?
アプリケーションのどこに時間が
かかっているのだろう?
イベント・モニター
DB2の現在の活動状態を
知りたい
DB2で問題が発生する前に異常
を検知したい
EXPLAIN
スナップショット・
モニター
ヘルス・モニター
ヘルス・センター
データベース・モニター・ツール
■
活動中のデータベースの状態をモニターしたり解析するためにDB2が提供する主なツールをご紹介します。
■
EXPLAIN
●
■
SQL文の実行経路に関する情報を取得します。
イベント・モニター
特定の時間内(モニターをかけている間)に発生したイベントを記録します。
各イベントの完了時に活動情報を提供します。
● 収集可能なイベントには以下のようなものがあります。
●
●
デッドロック
SQL文の実行
– トランザクションの完了
– データベースへの接続
–
–
■
スナップショット・モニター
スナップショット・モニターは、リクエストが出された特定の時点のデータベースの活動状態に関する情報を提供します。発生した
事象の回数や処理時間の累計、資源の現在の値、最大使用量等が出力されます。
● 出力される情報には以下のようなものがあります。
●
バッファー・プール等資源の使用状況
現在データベースに接続している数
– デッドロックの発生数
– CPU使用時間
–
–
„
ヘルス・モニター/ヘルス・センター
ヘルス・モニターは、ユーザー対話がなくてもインスタンスの状態を常にモニターするサーバー・サイドのツールです 。設定したしきい値を超
えていることを発見したり、オブジェクトの異常を検出した場合にアラートを出します。ヘルス・モニターは事前定義された電子メール・アドレス
またはポケットベル・アドレスに電子メールまたはメッセージを発行したり、スクリプトを起動したり、タスク・センター経由でタスクを実行するこ
とができます
„ ヘルス・センターは、ヘルス・モニターへのグラフィカル・インターフェースを提供します。
„
スナップショット・モニター
■
スナップショット・モニターでは様々なレベルの切り口で情報を取得することができますので、必要に応じて選択す
る必要があります。
●
主なスナップショット・モニター出力の内容
データベース・スナップショット
データベース・スナップショット
・ロック関連情報
・ロック関連情報
・・・
・・・
アプリケーション・スナップショット
アプリケーション・スナップショット
・稼動中のアプリケーション毎の情報
・稼動中のアプリケーション毎の情報
ロック関連情報
ロック関連情報
ソート関連情報
ソート関連情報
バッファー・プール関連情報
バッファー・プール関連情報
SQL関連情報
SQL関連情報
キャッシュ関連情報
キャッシュ関連情報
・ソート関連情報
・ソート関連情報
・・・
・・・
・バッファー・プール関連情報
・バッファー・プール関連情報
・・・
・・・
・SQL関連情報
・SQL関連情報
・・・
・・・
・キャッシュ関連情報
・キャッシュ関連情報
・・・
・・・
データベース・ロック・スナップショット
データベース・ロック・スナップショット
・稼動中のアプリケーション毎の
・稼動中のアプリケーション毎の
ロック関連情報
ロック関連情報
アプリケーションがロックを保持
アプリケーションがロックを保持
している資源
している資源
表スペース・スナップショット
表スペース・スナップショット
バッファー・プール・スナップショット
バッファー・プール・スナップショット
・バッファー・プール毎の情報
・バッファー・プール毎の情報
bufferpool1
bufferpool1
・・・
・・・
bufferpool2
bufferpool2
・・・
・・・
・表スペース毎の
・表スペース毎の
バッファー・プール情報
バッファー・プール情報
tablespace1
tablespace1
・・・
・・・
tablespace2
tablespace2
・・・
・・・
tablespace3
tablespace3
・・・
・・・
スナップショット・モニター
■
スナップショット・モニターは、データベース・マネージャーやデータベース・オブジェクトに関する様々なレベルの情
報を収集することができます。
データベース・マネージャー
データベース(ローカル、リモート、DCS)
● アプリケーション(ローカル、リモート、DCS)
● FCM(DB2エージェント間の内部通信の場合)
● バッファー・プール
● 表スペース
●表
● ロック
● 動的SQL文
●
●
■
スナップショット・モニターでは様々なレベルの切り口で情報を取得することができますので、必要に応じて選択す
る必要があります。
●
ここでは、よく取得される情報とその用途を一覧します。
GET SNAPSHOT FOR xx
用途
DATABASE
データベース全般の状態を把握可能。DATABASE全体を確認後、APPLICATIONSや
BUFFERPOOLSなど特定の情報について詳細を確認していく
APPLICATIONS
稼働中のアプリケーション毎のバッファー・プールやキャッシュ等資源の使用状況やSQLの発
行数、CPU時間を確認可能
BUFFERPOOLS
バッファー・プール毎の使用状況を確認可能
LOCKS
データベースに接続中のアプリケーションが保持しているロック資源を確認可能
TABLESPACES
表スペース毎のバッファー・プール使用状況を確認可能
注)APPLICATIONSで取得される情報は、BUFFERPOOLSやLOCKSの情報の基本的な部分を含んでいますが、一度に取得できる情報が
非常に多いので、特定の情報だけが必要なときは個々に取得します。
スナップショット・モニターの取得
スナップショット・モニターは、コマンドやSQLを使用して取得できます。
スナップショット・モニターを使用するには、SYSADM,SYSCTRL,SYSMAINTの権限が必要となります。
■ モニタースイッチはインスタンス全体または各セッション毎に制御できます。
■
■
●
■
イベント・モニターには影響を与えません。
スナップショット・モニターを操作するために以下のコマンドが提供されています。
GET MONITOR SWITCHES
UPDATE MONITOR SWITCHES
● RESET MONITOR
● GET SNAPSHOT FOR
● 上記以外にデータベース・マネージャー構成パラメーターに対して操作を行うコマンドもあります。
– GET DBM CFG でのDFT_MON_xxx
– GET DBM MONITOR SWITCHES
●
●
■
出力項目の種類
●
カウンター:値が累積されていく項目
–
RESET MONITORコマンドにて値の初期化が可能
ゲージ:現在の値を示す項目
● ウォーターマーク:最大/最小値を示す項目
●
–
●
■
リセット不可能
時間:活動に費やした秒数/マイクロ秒数
スナップショットを取得するには同一セッション内で一連の操作を実行する必要があります。
スナップショット・モニターの取得
■
■
DB2では常にデフォルトでいくらかの基本情報は収集されていますが、モニター・スイッチをオンにすると、各レベル
について、より多くのデータを収集することができます。
グループ
提供される情報
モニター・スイッチ
DBM CFGパラメーター
ソート
使用されたヒープ数、オーバーフロー、ソート・パフォーマンス
SORT
DFT_MON_SORT
ロック
ロックを保持している資源、ロック待ち情報
LOCK
DFT_MON_LOCK
表
読み/書きされた行数
TABLE
DFT_MON_TABLE
バッファー・プール
読み/書き回数、所要時間
BUFFERPOOL
DFT_MON_BUFPOOL
タイムスタンプ
タイムスタンプ
TIMESTAMP
DFT_MON_TIMESTAMP
作業単位
開始/終了時刻、完了状況
UOW
DFT_MON_UOW
SQL文
開始/終了時刻、文の識別
STATEMENT
DFT_MON_STMT
スナップショット・モニターの切り口のレベル(applicationやdatabaseなど)とスイッチの組合せによって、スナップ
ショットを取得したときに提供される情報は異なります。
■
適切なモニター・スイッチがオンになっていないと、必要な情報が表示されないことがあります。
■
モニター・スイッチはインスタンス・レベルと各セッション・レベルで制御ができます。
データベース・マネージャー構成パラメーターの値を変更した場合、通常、その値を有効にするためにはインスタンスの停止/
再始動が必要ですが、モニター・スイッチ関連パラメーターについては動的変更が可能です。
● 動的変更が発生しても既存のスナップショット・アプリケーションへの影響はありません。 スイッチの新しいデフォルト値を適用
するためには、 モニター・アプリケーションを終了してから、再び接続を確立する必要があります。
●
スナップショット・モニターの収集期間
■
データベース・マネージャーによって収集される情報が初期設定されるタイミングは以下のようになっています。
●
スイッチで制御されるカウンター
–
●
そのモニター・スイッチをオンにしたとき
該当オブジェクトが活動状態になったとき
アプリケーション・レベル・モニターが使用され、アプリケーションがデータベースに接続したとき
データベース・レベル・モニターが使用され、最初のアプリケーションが接続したとき
– 表レベル・モニターが使用され、表が最初にアクセスされたとき
– バッファー・プール・レベル・モニターが使用され、表スペースが最初にアクセスされたとき
–
–
●
データベース・オブジェクト・レベルの全ての活動が終了した時点
–
–
データベースへの接続が全てクローズされると、データベース・レベルの情報はクリアされます
全てのデータベースが切断されると、ステートメント・キャッシュがクリアされます
→データを残したい場合は、ACTIVATE DATABASEを実行しておく必要があります
データベース・スナップショット
データベース名
= SAMPLE
データベース・パス
= E:¥DB2¥NODE0000¥SQL00001¥
入力データベース別名
=
データベース状況
= アクティブ
カタログ・データベース・パーティション番号
=0
カタログ・ネットワーク・ノード名
=
データベース・サーバーで実行中のオペレーティング・システム= NT
データベースのロケーション
= ローカル
最初のデータベース接続タイム・スタンプ
= 01/15/2004 18:35:43.055877
最後のリセット・タイム・スタンプ
= 01/15/2004 18:35:59.537737
最後のバックアップ・タイム・スタンプ
= 01/07/2004 14:13:11.512835
スナップショット・タイム・スタンプ
= 01/15/2004 18:36:02.584982
データベースへの最初の接続または
ACTIVATE DATABASEコマンドの実行時刻
RESET MONITORコマンドによりカウンターが
リセットされた時刻
スナップショット・モニターが取得された時刻
スナップショット・コマンドの影響範囲
■
スナップショット・モニターに対してコマンドを実行した時の影響範囲についてみてみましょう。
※Tnは時間の経過(コマンド入力順序)を表しています
スイッチリスト
コピー
bufferpool=off
・・・
スイッチリスト
bufferpool=on
・・・
T0 セッション1開始
select実行:1回
バッファー・プール情報:○
データ論理読取:11
select実行 2回
バッファー・プール情報:○
データ論理読取:15
select実行 1回
バッファー・プール情報:○
データ論理読取:4
DBMスイッチリスト
bufferpool=off
lock=off
・・・
uow=off
コピー
スイッチリスト
bufferpool=off
・・・
T0 セッション2開始
T1 update monitor switches
using bufferpool on
T2 select * from org
T3 get snapshot for database
on sample
T3 get snapshot for database
on sample
T5 select * from project
T4 update monitor switches
using bufferpool on
T6 get snapshot for database
on sample
T7 reset monitor all
T6 get snapshot for database
on sample
T8 select * from sales
T9 get snapshot for database
on sample
T9 get snapshot for database
on sample
データベース:SAMPLE
select実行:1回
バッファー・プール情報:×
スイッチリスト
bufferpool=on
・・・
select実行:2回
バッファー・プール情報:○
データ論理読取:4
select実行:3回
バッファー・プール情報:○
データ論理読取:8
各セッションにおけるパラメーターの変更は他のセッションに影響を与えません
●
●
DBMスナップショット・モニター値のコピーを、それぞれ独自に所有しています。
但し、DBMレベルでオフになっているモニターは、各セッションのモニターのオンに連動してDBMのモニターがオンなり、
各セッションのモニターが全てオフになった時点で該当のモニターもオフになります。
スナップショット・コマンドの影響範囲
■
■
前の図は、バッファー・プール関連項目はバッファー・プール・スイッチをオンにしないと出力されないこと、およびス
イッチと収集期間との関連を説明しています。また、バッファー・プール・データ論理読み取り(前ページでは”データ
論理読取”と表す)とSelect SQLステートメント実行(前ページでは”select実行”と表す)は共にカウンター項目なの
で、数値リセットのタイミングについて説明しています。
また、Select SQL ステートメント実行は基本項目としてデフォルトでデータが収集されます
■
T3 GET SNAPSHOT
–
–
●
セッション1,2ともにT2で実行されたselect文をカウントしているのでselect実行回数は1となっています。
セッション1はバッファー・プール・スイッチをオンにしているので(T1)、バッファー・プール関連情報が出力されますが、セッション2はT
1のスイッチ変更の影響を受けずにバッファー・プール・スイッチがオフのため、情報が出力されません。
T6 GET SNAPSHOT
セッション1,2ともにT2とT5で実行されたselect文をカウントしているのでselect実行回数は2となっています。
この時点ではセッション2もバッファー・プール・スイッチをオンにしているので(T4)バッファー・プール関連情報が出力されています。
– バッファー・プール・データ論理読み取り回数に注目すると、セッション2はT4でカウンターがゼロにリセットされているため、T5の
select文のみがカウントされて4となり、セッション1はT3時点の11にT5の4を加えて15となっています。
–
–
●
T9 GET SNAPSHOT
セッション1はT7でリセット・コマンドを実行しているため、それ以降に実行されたT8のみをselect実行回数としてカウントしていますが、
セッション2はリセット・コマンドの影響を受けずにT2,T5,T8のselect文をカウントしているので、select実行回数は3となっています。
– バッファー・プール・データ論理読み取り回数についても、セッション2はT5にT8分を加えて8、セッション1はカウンターがリセットされ
ているためT8のみをカウントしており4となっています。
– セッション1ではリセット・コマンドを実行していますが、モニター・スイッチには影響を与えませんので、バッファー・プール関連情報は出
力されています。
–
■
スナップショット・モニターは同一セッションの活動のみを提供するのではなく、データベース全体の活動状況を提
供します。
スナップショット・モニター・コマンド -GET MONITOR SWITCHES■
■
スナップショット・モニターのコマンドはデータベース・マネージャー構成パラメーターに対して操作を行うものと各
セッションのモニター・スイッチに対して行うものがあります。
以下、スナップショット・モニターの操作を行うコマンドを紹介します。(主なパラメーターのみ)
●
スナップショット・モニター・スイッチのデータベース・マネージャー・レベルで現行設定を調べるとき
db2 => GET DBM MONITOR SWITCHES
DBM システム・モニター情報集
DB (データベース) パーティション番号のスイッチ・リスト
0
バッファー・プール活動情報
(BUFFERPOOL) = OFF
ロック情報
(LOCK)
= OFF
ソート情報
(SORT)
= OFF
SQL ステートメント情報
(STATEMENT) = OFF
表活動情報
(TABLE)
= OFF
タイム・スタンプ情報を取る
(TIMESTAMP) = ON 01/28/2004 14:22:26.022504
作業単位情報
(UOW) = OFF
●
スナップショット・モニター・スイッチの現行セッションの設定を調べるとき
db2 => GET MONITOR SWITCHES
モニター記録スイッチ
DB (データベース) パーティション番号のスイッチ・リスト
0
バッファー・プール活動情報
(BUFFERPOOL) = OFF
ロック情報
(LOCK)
= OFF
ソート情報
(SORT)
= OFF
SQL ステートメント情報
(STATEMENT) = OFF
表活動情報
(TABLE)
= OFF
タイム・スタンプ情報を取る
(TIMESTAMP) = ON 01/19/2004 13:27:46.133438
作業単位情報
(UOW) = OFF
・省略時はTIMESTAMP以外全てオフ
スナップショット・モニター・コマンド -UPDATE MONITOR SWITCHESデータベース・モニター記録スイッチをオンまたはオフにします。
■
UPDATE
UPDATEMONITOR
MONITORSWITCHES
SWITCHES
.------------------------.
.------------------------.
VV
||
>>-UPDATE
>>-UPDATEMONITOR
MONITORSWITCHES
SWITCHESUSING-------switch-name--+-ON--+--+-->
USING-------switch-name--+-ON--+--+-->
'-OFF-'
'-OFF-'
例:
例:
update
updatemonitor
monitorswitches
switchesusing
usingbufferpool
bufferpoolon
on
コマンド・パラメーター
● USING switch-name 以下のスイッチ名が使用できます。
BUFFERPOOL
LOCK
SORT
STATEMENT
TABLE
TIMESTAMP
UOW
■
バッファー・プール活動情報
ロック情報
ソート情報
SQLステートメント情報
表活動情報
タイム・スタンプ情報
作業単位情報
データベース・マネージャー構成パラメーターの変更には以下のコマンドを使用します。
●
●
UPDATE DBM CFG USING DFT_MON_xxxx ON/OFF
xxxxには以下の値が入ります
BUFPOOL
LOCK
– SORT
– STMT
–
–
-TABLE
-TIMESTAMP
-UOW
※データベース・モニター記録スイッチとデータベース・マネージャーの構成パラメーターでは、データベース・モニター記録スイッチの設定が
優先されます。
スナップショット・モニター・コマンド -RESET MONITOR■
モニターのカウンターをゼロにリセットします。
RESET MONITOR
>>-RESET MONITOR---+-ALL----------------------------------+----->
'-FOR---+-DATABASE-+---database-alias--'
‘--DB-------'
例
reset monitor all
コマンド・パラメーターー
●
●
ALL
このオプションは、すべてのデータベースについて内部カウンターをリセットするよう指示します。
FOR DATABASE database-alias
このオプションは、別名 database-alias をもつデータベースの内部カウンターだけをリセットするよう指示します。
※各セッションはモニター・データの個別のコピーを持っているので、コマンドを発行したセッションのカウンターのみリセットされます。
スナップショット・モニター・コマンド -GET SNAPSHOT FOR■
指定したレベルにおけるデータベースの活動状態を取得します。
GET
GETSNAPSHOT
SNAPSHOTFOR
FOR
>>-GET
>>-GETSNAPSHOT
SNAPSHOTFOR-------------------------------------------->
FOR-------------------------------------------->
>--+-+-DATABASE
MANAGER-+---------------------------------------+>
>--+-+-DATABASE MANAGER-+---------------------------------------+>
| |+-DB
||
+-DBMANAGER-------+
MANAGER-------+
| |'-DBM----------------'
||
'-DBM----------------'
+-ALL---DATABASES--------------------------------------------+
+-ALL---DATABASES--------------------------------------------+
+-ALL---APPLICATIONS------------------------------------------+
+-ALL---APPLICATIONS------------------------------------------+
+-ALL
+-ALLBUFFERPOOLS--------------------------------------------+
BUFFERPOOLS--------------------------------------------+
+-+-----+--APPLICATION----+-APPLID--appl-id-------+------------+
+-+-----+--APPLICATION----+-APPLID--appl-id-------+------------+
| | '-DCS-'
'-AGENTID--appl-handle--'
||
'-DCS-'
'-AGENTID--appl-handle--'
'--+-ALL------------------------------+---ON--database-alias-----'
'--+-ALL------------------------------+---ON--database-alias-----'
+----------+-DATABASE-+-----------+
+----------+-DATABASE-+-----------+
||
'-DB--------'
||
'-DB--------'
+----------APPLICATIONS------------+
+----------APPLICATIONS------------+
+-TABLES---------------------------+
+-TABLES---------------------------+
+-TABLESPACES---------------------+
+-TABLESPACES---------------------+
+-LOCKS----------------------------+
+-LOCKS----------------------------+
'-BUFFERPOOLS---------------------'
'-BUFFERPOOLS---------------------'
例
例
get
getsnapshot
snapshotfor
fordatabase
databaseon
onsample
sample
get
snapshot
for
tables
on
sample
get snapshot for tables on sample
特定の活動中のアプリケーションを
表示したいときに使用できます。
applid、appl handleはlist applications
コマンドにて確認できます。
スナップショット・モニター・コマンド -GET SNAPSHOT FORコマンド・パラメーターー
●
DATABASE MANAGER
●
ALL DATABASES
●
ALL APPLICATIONS
●
ALL BUFFERPOOLS
●
ALL ON database-alias
活動状態のデータベース・マネージャー・インスタンスの統計を提供します。
現行のノード上にあるすべての活動状態のデータベースに関する、一般的な統計を提供します。
現行のノード上にあるデータベースに接続された、活動状態のすべてのアプリケーションに関する情報を提供します。
活動状態のすべてのデータベースのバッファー・プール活動に関する情報を提供します。
指定したデータベースのすべてのアプリケーション、表、表スペース、バッファー・プール、およびロックに関する一般的な統計および情
報を提供します。
●
DATABASE ON database-alias
●
APPLICATIONS ON database-alias
●
TABLES ON database-alias
指定したデータベースの一般的な統計を提供します。
指定したデータベースに接続されているすべてのアプリケーションに関する情報を提供します。
指定したデータベース内の表に関する情報を提供します。 これは、TABLE 記録スイッチがオンになって以降にアクセスされた表のみ
を含みます
●
TABLESPACES ON database-alias
●
LOCKS ON database-alias
●
BUFFERPOOLS ON database-alias
指定したデータベースの表スペースに関する情報を提供します。
指定したデータベースに接続されている各アプリケーションが保持している、すべてのロックに関する情報を提供します。
指定したデータベースのバッファー・プール活動に関する情報を提供します。
スナップショット・モニターの取得手順 -コマンド-
アプリケーション
DB2 CLP
c:¥sqllib > db2 get monitor switches
・・・・・
c:¥sqllib > db2 update monitor switches using table on
c:¥sqllib > db2 update monitor switches using bufferpool on
c:¥sqllib > db2 reset monitor all ③モニターをリセットする
①モニターの活動状況を確認する
②モニタースイッチをオンにする
④アプリケーションを実行する
注:このとき、コマンド・ウィンドウを閉じない。
c:¥sqllib > db2 get snapshot for database on sample >sample_snap.txt ⑤スナップショットを取得する
c:¥sqllib > db2 get snapshot for applications on sample >>sample_snap.txt
スナップショット・モニターの取得手順 -コマンド手順
1.モニター・スイッチの活動状況を確認する
2.取得する情報のモニター・スイッチをオンにする
必要とする情報に対応するモニター・スイッチをONにします。
モニターがONの状態ではシステムに多少負荷がかかります。
注)ウィンドウを閉じると、モニタースイッチはOFFになります。
3.モニター情報をリセットする
スナップショットを取得する直前で、モニター情報をリセットします。
注)スナップショットの保持している数値が0にリセットされますが、モニタースイッチはリセットされません。
4.アプリケーションを実行する
データベースへのアクセスを実行します。
アプリケーション中の特定の作業を見る場合には、その作業を行う直前で、モニター情報をリセットします。
5.スナップショットを取得する
スナップショットを取得します。
スナップショット情報を取得しても、カウンターの情報はリセットされません。
カウンターの情報は、必要に応じてリセットし、再度スナップショット・モニターの取得を繰り返します。
スナップショット・モニター情報の見方 1
スナップショット情報は、取得したスナップショットによって内容や詳細レベルが異なります。
パフォーマンスなどのトラブル時に、問題点がどこにあるかを分析するためにスナップショット・モニターを利用します。
このような場合には、まずDATABASE スナップショットを取得し、次の4つの点に注目し大まかな切り分けを行います。
●
●
●
●
ロック情報
バッファー・プール情報
アプリケーション稼動状況
キャッシュ情報
それぞれ、次のようなことが確認できます。
●
ロック情報
データベースに発生しているロックの状況を見ることができます。
想定していたよりもロックが多く発生している場合は、アプリケーションのロジックに問題があることが想像されます。
アプリケーションごとにスナップショット取得すれば、どのアプリケーションがロックを起こしているかがわかります。
●
バッファー・プール情報
バッファー・プールのサイズが適正かどうか、索引が正しく使用されているかどうかを確認することができます。
場合によって、バッファー・プールの大きさを大きくしたり、索引を考慮したりします。
●
アプリケーション稼動状況
アプリケーションから発行されるSQLやシステムが発行するSQLをまとめて確認することができます。
アプリケーションが想定したようにデータベースをアクセスしているかがわかります。想定したよりも、データにアクセスする回
数が少ない場合や、Rollbackが大量に発生している場合には、アプリケーションに問題があることが想像されます。
●
キャッシュ情報
パッケージ・キャッシュやカタログ・キャッシュのサイズが適正かどうか確認できます。
スナップショット・モニター情報の見方 2
ここでは、スナップショット情報の基本的な見方を解説します。
次ページ以降にあるのは、
>
>
>
>
db2
db2
db2
db2
update monitor swtiches using sort on
update monitor switches using lock on
update monitor switches using bufferpool on
reset monitor all
reset monitor と、get snapshot の間に、稼動状況を確認し
たいアプリケーションを実行する。
> db2 get snapshot for database on sample
と実行したときの一例です。
モニター・スイッチは全てを on にする必要はありませんが、on にしなかった情報はスナップショット情報で[取得されませんでした]もし
くは[not collected]となります。
特に注目すべき項目が強調してあります。
※ それぞれのモニター・スイッチをONにすると、モニター・ヒープ・サイズ(mon_heap_sz)が使用されます。従ってモニター・ヒープ・サイ
ズが小さいとエラー(SQLCODE -973)になる場合があります。その場合には、モニター・ヒープ・サイズを大きくするか、不要なモニ
ター・スイッチをOFFにしてください。詳細に関しては、マニュアルを参照してください。
モニター・ヒープに必要なページの概数を求める式
(アプリケーションごとに使用するストレージ +
イベント・モニターごとに使用するストレージ +
モニター・アプリケーションごとに使用するストレージ +
ゲートウェイ・アプリケーションが使用するストレージ)
/ 4096
スナップショット・モニター情報の例
データベース・スナップショット
データベース・スナップショット
データベース名
= SAMPLE
データベース名
= SAMPLE
データベース・パス
= E:¥DB2¥NODE0000¥SQL00001¥
データベース・パス
= E:¥DB2¥NODE0000¥SQL00001¥
入力データベース別名
= SAMPLE
入力データベース別名
= SAMPLE
データベース状況
= アクティブ
データベース状況
= アクティブ
・・・・・
・・・・・
スナップショット・タイム・スタンプ
= 01/20/2004 15:51:34.721045
スナップショット・タイム・スタンプ
= 01/20/2004 15:51:34.721045
・・・・・
・・・・・
ロック保留
=0
ロック保留
=0
ロック待機
=0
ロック待機
=0
ロック上で待機される時間データベース (ms)
=0
*
ロック上で待機される時間データベース (ms)
=0
*
使用中のロック・リスト・メモリーー (バイト)
= 960
使用中のロック・リスト・メモリーー (バイト)
= 960
デッドロック検出
デッドロック検出
ロック・エスカレーション
ロック・エスカレーション
排他ロック・エスカレーション
排他ロック・エスカレーション
=0
=0
=0
=0
=0
=0
ロック上で待機中のエージェント
=0
ロック上で待機中のエージェント
=0
ロック・タイムアウト
=0
ロック・タイムアウト
=0
・・・・・
・・・・・
バッファー・プール・データ論理読み取り
= 14
バッファー・プール・データ論理読み取り
= 14
バッファー・プール・データ物理読み取り
=8
バッファー・プール・データ物理読み取り
=8
バッファー・プール一時データ論理読み取り
=0
バッファー・プール一時データ論理読み取り
=0
バッファー・プール一時データ物理読み取り
=0
バッファー・プール一時データ物理読み取り
=0
非同期プール・データ・ページ読み取り
=0
非同期プール・データ・ページ読み取り
=0
バッファー・プール・データ書き込み
=0
バッファー・プール・データ書き込み
=0
非同期プール・データ・ページ書き込み
=0
非同期プール・データ・ページ書き込み
=0
バッファー・プール索引論理読み取り
= 22
バッファー・プール索引論理読み取り
= 22
バッファー・プール索引物理読み取り
= 14
バッファー・プール索引物理読み取り
= 14
バッファー・プール一時索引論理読み取り
=0
バッファー・プール一時索引論理読み取り
=0
バッファー・プール一時索引物理読み取り
=0
バッファー・プール一時索引物理読み取り
=0
非同期プール索引ページ読み取り
=0
非同期プール索引ページ読み取り
=0
バッファー・プール索引書き込み
=0
バッファー・プール索引書き込み
=0
非同期プール索引ページ書き込み
=0
非同期プール索引ページ書き込み
=0
バッファー・プール読み取り時間の合計 (ms)
=2
バッファー・プール読み取り時間の合計 (ms)
=2
バッファー・プール書き込み時間の合計 (ms)
=0
バッファー・プール書き込み時間の合計 (ms)
=0
非同期読み取り合計経過時間
=0
非同期読み取り合計経過時間
=0
非同期書き込み合計経過時間
=0
非同期書き込み合計経過時間
=0
}
}
**
**
**
**
**
**
**
**
**
**
**
**
**
**
**
**
**
**
**
**
**
**
**
**
**
**
**
**
**
**
**
**
**
**
**
**
①ロック情報
②バッファー・プール情報
*:ロック・モニターをオンにしないと
収集されない項目
**:バッファー・プール・モニターを
オンにしないと収集されない項目
スナップショット・モニター情報の例
・・・・・
・・・・・
コミット・ステートメント試行
コミット・ステートメント試行
ロールバック・ステートメント試行
ロールバック・ステートメント試行
動的ステートメント試行
動的ステートメント試行
静的ステートメント試行
静的ステートメント試行
失敗したステートメント操作
失敗したステートメント操作
Select SQL ステートメント実行
Select SQL ステートメント実行
Update/Insert/Delete ステートメント実行
Update/Insert/Delete ステートメント実行
DDL ステートメント実行
DDL ステートメント実行
内部自動再バインド
内部自動再バインド
内部行削除
内部行削除
内部挿入行
内部挿入行
内部行更新
内部行更新
内部コミット
内部コミット
内部ロールバック
内部ロールバック
デッドロックによる内部ロールバック
デッドロックによる内部ロールバック
削除行数
削除行数
挿入行数
挿入行数
更新行数
更新行数
選択行数
選択行数
読み取り行数
読み取り行数
バインド / プリコンパイル試行
バインド / プリコンパイル試行
・・・・・
・・・・・
パッケージ・キャッシュ検索
パッケージ・キャッシュ検索
パッケージ・キャッシュ挿入
パッケージ・キャッシュ挿入
パッケージ・キャッシュ・オーバーフロー
パッケージ・キャッシュ・オーバーフロー
パッケージ・キャッシュ最高水準点 (バイト)
パッケージ・キャッシュ最高水準点 (バイト)
アプリケーション・セクション検索
アプリケーション・セクション検索
アプリケーション・セクション挿入
アプリケーション・セクション挿入
カタログ・キャッシュ検索
カタログ・キャッシュ検索
カタログ・キャッシュ挿入
カタログ・キャッシュ挿入
カタログ・キャッシュ・オーバーフロー
カタログ・キャッシュ・オーバーフロー
カタログ・キャッシュの最高水準点
カタログ・キャッシュの最高水準点
=2
=2
=0
=0
=9
=9
=2
=2
=0
=0
=2
=2
=0
=0
=0
=0
=0
=0
=0
=0
=0
=0
=0
=0
=1
=1
=0
=0
=0
=0
=0
=0
=0
=0
=0
=0
= 40
= 40
= 53
= 53
=0
=0
=3
=3
=2
=2
=0
=0
= 173096
= 173096
=9
=9
=2
=2
=6
=6
=4
=4
=0
=0
=0
=0
}
}
}
③アプリケーション稼動状況
④キャッシュ情報
スナップショット・モニター情報の例 - 解説1
①ロック情報
モニター期間中のデータベースのロックに関する情報の概略です。
get snapshot for locks on DB名 コマンドでスナップショット情報を取得する方法もあります。
不用意なロックや、ロック・エスカーレーション、デッドロックが頻繁に起こっているようだと、ロジックを見直す必要があります。
commit ステートメントの発行し忘れがないかなどを確認してください。
●
デッドロックの検出(Deadlocks detected)
デッドロックが発生した回数です。
この数値が大きい場合にはアプリケーションのロジック変更によるデッドロック回避が必要です。
●
ロック・エスカレーション(Lock escalations)
●
排他ロック・エスカレーション(Exclusive lock escalations)
ロック・エスカレーションが発生した回数です。
ロック・エスカレーションは、多くの行ロックが発生した場合に、DB2 UDB が行ロックから排他ロックや表ロックへ、ロック・レベル
が変更することを意味します。これは、行ロックが大量に発生したときにデータベース構成パラメーターに応じて発生しますので、
ロック・リストを大きくするか、deadlock と同じく、アプリケーションのロジック変更が必要です。
スナップショット・モニター情報の例 - 解説2
②バッファー・プール情報
バッファー・プールの状況に関する情報の概略です。
(get snapshot for bufferpools on DB名 コマンドでスナップショット情報を取得する方法もあります。)
データベースはバッファー・プール(メモリー)経由でしかデータをアクセスできません。
従って、バッファー・プールにキャッシュされていない場合は、ディスクからバッファー・プールに読み込む時間が余分に発生する
ことになります。
また、バッファー・プールに空きスペースがない場合には、使用度の低いデータの物理ディスクへの書き込みが発生するなど、パ
フォーマンスに多くの影響を及ぼす場合があります。
バッファー・プール・ヒット率が悪い場合にはバッファー・プールを大きくするなど、設定値を変更してみてください。
ただし、通常はデータの追加や更新が行われるためバッファー・ヒット率は 100% にはなりません。
一般的には90%以上を目標とします。
●
バッファー・プール・データ論理読み取り、バッファー・プール索引論理読み取り
(Buffer pool data logical reads、Buffer pool index logical reads)
バッファー・プールから、データや索引を読み込んだ回数です
●
バッファー・プール・データ物理読み取り、バッファー・プール索引物理読み取り
(Buffer pool data physical reads、Buffer pool index physical reads)
ディスクI/Oを伴う、バッファー・プールの読み込み回数です。
データのバッファー・ヒット率
(1-(バッファー・プール・データ物理読み取り/バッファー・プール・データ論理読み取り)) * 100 (%)
索引のバッファー・ヒット率
(1-(バッファー・プール索引物理読み取り/バッファー・プール索引論理読み取り)) * 100 (%)
バッファー・プール全体のバッファー・ヒット率
(1-(バッファー・プール・データ物理読み取り+バッファー・プール索引物理読み取り
/(バッファー・プール・データ論理読み取り+バッファー・プール索引論理読み取り)) * 100 (%)
スナップショット・モニター情報の例 - 解説3
③アプリケーション稼動状況
アプリケーションのデータベースに関するアクセス状況を見ることができます。
この項目を確認すれば、スナップショット取得期間中のSQLの大体の処理数を把握することができます。
●
コミット・ステートメント試行
●
ロールバック・ステートメント試行
●
動的ステートメント試行、静的ステートメント試行
●
Select SQL ステートメント実行、Update/Insert/Delete ステートメント実行
コミット文の発行回数
ロールバック文の発行回数
動的/静的SQL文の発行回数
select/update/insert/delete SQL文の発行回数です。
これらの項目で、アプリケーションが発行したSQL文の数が把握できますので、アプリケーションが
無限ループなどがなく、正しく構築されているかどうかが確認できます。
●
内部ロールバック/デッドロックによる内部ロールバック
システムが自動的に行ったロールバックやデッドロックによってロールバックされた数
これらの項目が多い場合には、アプリケーションに問題がありロールバックが発行されている可能性があります。
●
削除行数、挿入行数、更新行数、選択行数
delete /insert/update/selectされた回数です。
これらの項目で、SQLで処理された行数を把握することができるため、想定していた処理量が実行されているかを確認できます。処
理量が大幅に想定していた数字と異なる場合には、SQLの間違いや、データに問題があることが想像されます。
注)アプリケーション稼動状況で取得される情報には、インデックスなどを読み込んだ情報を含んでいますので、純粋にユーザー・ア
プリケーションで処理した行数よりは多くカウントされます。
スナップショット・モニター情報の例 - 解説4
④キャッシュ情報
カタログキャッシュや、パッケージキャッシュは静的SQLのコンパイル時や、動的SQLのSQL処理時に参照されます。
特に動的SQLの場合は、SQLのコンパイルがSQL処理時に行われるので、カタログキャッシュやパッケージキャッシュが小さいと、SQLを処
理するごとにコンパイル時間が必要となり、パフォーマンスに悪影響を及ぼします。
カタログ、パッケージどちらのヒット率も80%を一つの目安として、SQLを見直しなるべく同じようなステートメントになるように変更するか、カ
タログ、パッケージのキャッシュサイズを大きくとることを検討してください。
●
●
カタログ・キャッシュ検索、パッケージ・キャッシュ検索
カタログ、パッケージキャッシュが参照された回数です。
カタログ・キャッシュ挿入、パッケージ・キャッシュ挿入
カタログ、パッケージキャッシュへ追加しようとした回数です。
カタログキャッシュ ヒット率
(1-(カタログ・キャッシュ挿入/カタログ・キャッシュ検索)) * 100 (%)
パッケージキャッシュ ヒット率
(1-(パッケージ・キャッシュ挿入/パッケージ・キャッシュ検索)) * 100 (%)
参考:アプリケーション・スナップショット出力例
■
アプリケーション・スナップショットのサンプルです。
インバウンド通信アドレス
インバウンド通信アドレス
(掲載済でない主な項目のみを掲載しています。)
(全てのモニター・スイッチをオンにしています。)
DB2 for Windows で活動中のアプリケーションです。(①)
update staff set years=10 where id=210を実行しようとしていますが、
STAFFテーブルのロック待ちとなっていることがわかります。(②)
アプリケーション・スナップショット
アプリケーション・スナップショット
②
アプリケーション・ハンドル
= 17
アプリケーション・ハンドル
= 17
アプリケーション状況
= ロック待機
アプリケーション状況
= ロック待機
状況変更時刻
= 01/23/2004 15:58:10.999540
状況変更時刻
= 01/23/2004 15:58:10.999540
アプリケーション・コード・ページ
= 943
アプリケーション・コード・ページ
= 943
アプリケーション国 / 領域別コード
= 81
アプリケーション国 / 領域別コード
= 81
DUOW 相関トークン
= *LOCAL.DB2.00E2C3051324
DUOW 相関トークン
= *LOCAL.DB2.00E2C3051324
アプリケーション名
= db2bp.exe
アプリケーション名
= db2bp.exe
アプリケーション ID
= *LOCAL.DB2.00E2C3051324
アプリケーション ID
= *LOCAL.DB2.00E2C3051324
シーケンス番号
= 0004
シーケンス番号
= 0004
TP モニター・クライアント・ユーザー ID
=
TP モニター・クライアント・ユーザー ID
=
・・・
・・・
接続要求開始タイム・スタンプ
= 01/23/2004 14:13:22.223282
接続要求開始タイム・スタンプ
= 01/23/2004 14:13:22.223282
接続要求完了タイム・スタンプ
= 01/23/2004 14:13:22.665545
接続要求完了タイム・スタンプ
= 01/23/2004 14:13:22.665545
アプリケーション・アイドル時間
=0
アプリケーション・アイドル時間
=0
CONNECT 許可 ID
= DB2ADMIN
CONNECT 許可 ID
= DB2ADMIN
クライアント・ログイン ID
= DB2ADMIN
クライアント・ログイン ID
= DB2ADMIN
クライアント構成名
=
クライアント構成名
=
クライアント・データベース・マネージャー製品 ID
= SQL08014
クライアント・データベース・マネージャー製品 ID
= SQL08014
クライアント・アプリケーションのプロセス ID
= 1744
クライアント・アプリケーションのプロセス ID
= 1744
クライアント・アプリケーションのプラットフォーム
= NT
クライアント・アプリケーションのプラットフォーム
= NT
クライアントの通信プロトコル
= ローカル・クライアント
クライアントの通信プロトコル
= ローカル・クライアント
①
データベース名
データベース名
データベース・パス
データベース・パス
クライアント・データベース別名
クライアント・データベース別名
入力データベース別名
入力データベース別名
最後のリセット・タイム・スタンプ
最後のリセット・タイム・スタンプ
スナップショット・タイム・スタンプ
スナップショット・タイム・スタンプ
認可された最高権限レベル
認可された最高権限レベル
直接 DBADM 権限
直接 DBADM 権限
直接 CREATETAB 権限
直接 CREATETAB 権限
直接 BINDADD 権限
直接 BINDADD 権限
・・・
・・・
= *LOCAL.DB2
= *LOCAL.DB2
= SAMPLE
= SAMPLE
= E:¥DB2¥NODE0000¥SQL00001¥
= E:¥DB2¥NODE0000¥SQL00001¥
= SAMPLE
= SAMPLE
= SAMPLE
= SAMPLE
= 01/23/2004 15:57:15.266140
= 01/23/2004 15:57:15.266140
= 01/23/2004 15:58:49.557676
= 01/23/2004 15:58:49.557676
=
=
アプリケーションで保留されたロック
=5
アプリケーションで保留されたロック
=5
接続からのロック待機
=1
接続からのロック待機
=1
ロック上で待機している時間アプリケーション (ms)
= 38558
ロック上で待機している時間アプリケーション (ms)
= 38558
デッドロック検出
=0
デッドロック検出
=0
ロック・エスカレーション
=0
ロック・エスカレーション
=0
排他ロック・エスカレーション
=0
排他ロック・エスカレーション
=0
接続後のロック・タイムアウト数
=0
接続後のロック・タイムアウト数
=0
ロック上で待機している合計時間 UOW (ms)
= 38558
ロック上で待機している合計時間 UOW (ms)
= 38558
ソート合計
ソート合計
ソート時間の合計 (ms)
ソート時間の合計 (ms)
ソート合計オーバーフロー
ソート合計オーバーフロー
バッファー・プール関連情報
バッファー・プール関連情報
・・・
・・・
DML操作関連情報
DML操作関連情報
・・・
・・・
キャッシュ関連情報
キャッシュ関連情報
・・・
・・・
=0
=0
=0
=0
=0
=0
参考:アプリケーション・スナップショット出力例
最新の操作
= 即時に実行
最新の操作
= 即時に実行
最新の操作開始タイム・スタンプ
= 01/23/2004 15:58:10.999196
最新の操作開始タイム・スタンプ
= 01/23/2004 15:58:10.999196
最新の操作停止タイム・スタンプ
=
最新の操作停止タイム・スタンプ
=
アプリケーションに関連したエージェント
=1
アプリケーションに関連したエージェント
=1
・・・
・・・
ステートメント・タイプ
= 動的 SQL ステートメント
ステートメント・タイプ
= 動的 SQL ステートメント
ステートメント
= 即時に実行
ステートメント
= 即時に実行
セクション数
= 203
セクション数
= 203
アプリケーション作成者
= NULLID
アプリケーション作成者
= NULLID
パッケージ名
= SQLC2E03
パッケージ名
= SQLC2E03
整合性トークン
= AAAAAJHR
整合性トークン
= AAAAAJHR
パッケージ・バージョン ID
=
パッケージ・バージョン ID
=
カーソル名
=
カーソル名
=
ステートメント・データベース・パーティション番号
=0
ステートメント・データベース・パーティション番号
=0
ステートメント開始タイム・スタンプ
= 01/23/2004 15:58:10.999196
ステートメント開始タイム・スタンプ
= 01/23/2004 15:58:10.999196
ステートメント停止タイム・スタンプ
=
ステートメント停止タイム・スタンプ
=
最後に完了した stmt の経過時間 (sec.ms)
= 0.000000
最後に完了した stmt の経過時間 (sec.ms)
= 0.000000
合計ユーザー CPU 時間
= 0.000000
合計ユーザー CPU 時間
= 0.000000
合計システム CPU 時間
= 0.000000
合計システム CPU 時間
= 0.000000
timeron 時の SQL コンパイラー・コスト見積もり
= 93
timeron 時の SQL コンパイラー・コスト見積もり
= 93
SQL コンパイラー・カーディナリティー見積もり
=3
SQL コンパイラー・カーディナリティー見積もり
=3
要求された並列処理の度合い
=1
要求された並列処理の度合い
=1
ステートメント上で作動しているエージェント数
=1
ステートメント上で作動しているエージェント数
=1
ステートメント用に作成されたサブエージェントの数
=1
ステートメント用に作成されたサブエージェントの数
=1
ステートメント・ソート
=0
ステートメント・ソート
=0
ソート合計時間
=0
ソート合計時間
=0
ソート・オーバーフロー
=0
ソート・オーバーフロー
=0
読み取り行数
= 21
読み取り行数
= 21
書き込み行数
=0
書き込み行数
=0
削除行数
=0
削除行数
=0
更新行数
=0
更新行数
=0
挿入行数
=0
挿入行数
=0
フェッチ行数
=0
フェッチ行数
=0
・・・
・・・
ブロック・カーソル
= NO
ブロック・カーソル
= NO
動的 SQL ステートメント・テキスト :
動的 SQL ステートメント・テキスト :
update staff set years=10 where id=210
update staff set years=10 where id=210
エージェント処理/スレッド ID
エージェント処理/スレッド ID
ロック待ちのサブセクション
ロック待ちのサブセクション
ロック保留中エージェント ID
ロック保留中エージェント ID
ロック保留中のアプリケーション ID
ロック保留中のアプリケーション ID
ロック名
ロック名
ロック属性
ロック属性
リリース・フラグ
リリース・フラグ
ロック・オブジェクト・タイプ
ロック・オブジェクト・タイプ
ロック・モード
ロック・モード
要求ロック・モード
要求ロック・モード
ロック保留中の表スペース名
ロック保留中の表スペース名
ロック保留中の表スキーマ
ロック保留中の表スキーマ
ロック保留中の表名
ロック保留中の表名
ロック待機開始タイム・スタンプ
ロック待機開始タイム・スタンプ
②
= 1668
= 1668
=0
=0
= 22
= 22
= *LOCAL.DB2.00E683063804
= *LOCAL.DB2.00E683063804
= 0x020003001A0000000000000052
= 0x020003001A0000000000000052
= 0x00000000
= 0x00000000
= 0x40000000
= 0x40000000
=行
=行
= 排他ロック (X)
= 排他ロック (X)
= 更新ロック (U)
= 更新ロック (U)
= USERSPACE1
= USERSPACE1
= DB2ADMIN
= DB2ADMIN
= STAFF
= STAFF
= 01/23/2004 15:58:10.999542
= 01/23/2004 15:58:10.999542
アプリケーション・ハンドル:17
update staff set years=10 where
id=210
アプリケーション・ハンドル:22
update staff set years=10 where
id=230
ロック待ち
COMMIT待ち
staff
参考:データベース・ロック・スナップショット出力例
■
データベース・ロック・スナップショットのサンプルです。
左がアプリケーション・スナップショット例のアプリケーションです。
(アプリケーション・ハンドル:17)
右が、ロックを保持している側のアプリケーションです(アプリケーション・
ハンドル:22)。コミットが出ていないので、ロックを保持している状態です。
データベース・ロック・スナップショット
データベース・ロック・スナップショット
アプリケーション・ハンドル
アプリケーション・ハンドル
アプリケーション ID
アプリケーション ID
シーケンス番号
シーケンス番号
アプリケーション名
アプリケーション名
CONNECT 許可 ID
CONNECT 許可 ID
アプリケーション状況
アプリケーション状況
状況変更時刻
状況変更時刻
アプリケーション・コード・ページ
アプリケーション・コード・ページ
保留ロック
保留ロック
合計待ち時間 (ms)
合計待ち時間 (ms)
ロック待ちのサブセクション
ロック待ちのサブセクション
ロック保留中エージェント ID
ロック保留中エージェント ID
ロック保留中のアプリケーション ID
ロック保留中のアプリケーション ID
ロック名
ロック名
ロック属性
ロック属性
リリース・フラグ
リリース・フラグ
ロック・オブジェクト・タイプ
ロック・オブジェクト・タイプ
ロック・モード
ロック・モード
要求ロック・モード
要求ロック・モード
ロック保留中の表スペース名
ロック保留中の表スペース名
ロック保留中の表スキーマ
ロック保留中の表スキーマ
ロック保留中の表名
ロック保留中の表名
ロック待機開始タイム・スタンプ
ロック待機開始タイム・スタンプ
・・・
・・・
= 17
= 17
= *LOCAL.DB2.00E2C3051324
= *LOCAL.DB2.00E2C3051324
= 0004
= 0004
= db2bp.exe
= db2bp.exe
= DB2ADMIN
= DB2ADMIN
= ロック待機
= ロック待機
= 01/23/2004 15:58:10.999540
= 01/23/2004 15:58:10.999540
= 943
= 943
=4
=4
= 3162254
= 3162254
=0
=0
= 22
= 22
= *LOCAL.DB2.00E683063804
= *LOCAL.DB2.00E683063804
= 0x020003001A0000000000000052
= 0x020003001A0000000000000052
= 0x00000000
= 0x00000000
= 0x40000000
= 0x40000000
=行
=行
= 排他ロック (X)
= 排他ロック (X)
= 更新ロック (U)
= 更新ロック (U)
= USERSPACE1
= USERSPACE1
= DB2ADMIN
= DB2ADMIN
= STAFF
= STAFF
= 01/23/2004 15:58:10.999542
= 01/23/2004 15:58:10.999542
データベース名
データベース名
データベース・パス
データベース・パス
入力データベース別名
入力データベース別名
保留ロック
保留ロック
現在接続されているアプリケーション
現在接続されているアプリケーション
ロック上で待機中のエージェント
ロック上で待機中のエージェント
スナップショット・タイム・スタンプ
スナップショット・タイム・スタンプ
アプリケーション・ハンドル
アプリケーション・ハンドル
アプリケーション ID
アプリケーション ID
シーケンス番号
シーケンス番号
アプリケーション名
アプリケーション名
CONNECT 許可 ID
CONNECT 許可 ID
アプリケーション状況
アプリケーション状況
状況変更時刻
状況変更時刻
アプリケーション・コード・ページ
アプリケーション・コード・ページ
保留ロック
保留ロック
合計待ち時間 (ms)
合計待ち時間 (ms)
ロックのリスト
ロックのリスト
ロック名
ロック名
ロック属性
ロック属性
リリース・フラグ
リリース・フラグ
ロック・カウント
ロック・カウント
保留カウント
保留カウント
ロック・オブジェクト名
ロック・オブジェクト名
オブジェクト・タイプ
オブジェクト・タイプ
表スペース名
表スペース名
表スキーマ
表スキーマ
表名
表名
モード
モード
・・・
・・・
= SAMPLE
= SAMPLE
= E:¥DB2¥NODE0000¥SQL00001¥
= E:¥DB2¥NODE0000¥SQL00001¥
= SAMPLE
= SAMPLE
=7
=7
=2
=2
=1
=1
= 01/23/2004 16:50:53.254451
= 01/23/2004 16:50:53.254451
= 22
= 22
= *LOCAL.DB2.00E683063804
= *LOCAL.DB2.00E683063804
= 0002
= 0002
= db2bp.exe
= db2bp.exe
= DB2ADMIN
= DB2ADMIN
= UOW 待機中
= UOW 待機中
= 01/23/2004 15:58:04.257565
= 01/23/2004 15:58:04.257565
= 943
= 943
=3
=3
=0
=0
= 0x020003001A0000000000000052
= 0x020003001A0000000000000052
= 0x00000020
= 0x00000020
= 0x40000000
= 0x40000000
=1
=1
=0
=0
= 26
= 26
=行
=行
= USERSPACE1
= USERSPACE1
= DB2ADMIN
= DB2ADMIN
= STAFF
= STAFF
=X
=X
スナップショット・モニターSQL表関数
■
SQL照会のスナップショット表関数を使用することにより、DB2 インスタンスに関するモニター情報のスナップ
ショットをキャプチャーすることができます。SQL表関数を用いることで、SELECT文によるスナップショットの取得
ができ、必要な情報のみをWHERE句で指定することにより、取り出すことができます。また、スナップショットの取
得をプログラムに組み込むことが出来ます。
主なSQL表関数
モニター・レベル
SQL表関数
戻される情報
データベース・マネージャー
SNAPSHOT_DBM
データベース・マネージャー・レベル情報
データベース
SNAPSHOT_DATABASE
データベースのデータベース・レベル情報およびカウンター。情報が戻されるの
は、最低 1 つのアプリケーションがデータベースに接続している場合だけです。
アプリケーション
SNAPSHOT_APPL
パーティション上のデータベースに接続されている各アプリケーションについて
の汎用アプリケーション・レベル情報。これには、累積カウンター、状況情報、
および最後に実行された SQL ステートメント (ステートメント・スイッチが設定さ
れている場合) が含まれます。
ロック
SNAPSHOT_LOCK
データベースに接続された各アプリケーションについての、データベース・レベ
ルおよびアプリケーション・レベルのロック情報。ロック・スイッチが必要です。
表スペース
SNAPSHOT_TBS
データベース・レベルの表スペース活動に関する情報。また、データベースに
接続された各アプリケーションのアプリケーション・レベル、およびデータベース
に接続された各アプリケーションがアクセスしている各表スペースの表スペー
ス・レベルの情報も含みます。バッファー・プール・スイッチが必要です。
バッファー・プール
SNAPSHOT_BP
指定されたデータベースのバッファー・プール活動カウンター。バッファー・プー
ル・スイッチが必要です。
動的 SQL
SNAPSHOT_DYN_SQL
データベースの SQL ステートメント・キャッシュからの実行した日付を含むス
テートメントの情報。
スナップショット・モニターSQL表関数
手順
1.データベースに接続する。
これは、モニターする必要のあるインスタンス内のどのデータベースでもかまいません。スナップショット表関数を使用したSQL照会は、デー
タベースに接続していなければ実行できません。
2.キャプチャーする必要のあるスナップショットのタイプ、およびモニターする必要のあるデータベースとパーティションを決定する。
3.該当するスナップショット表関数を使用して照会を実行する。
次の照会では、現在接続しているパーティションのSAMPLEデータベースに関するロック情報のスナップショットをキャプチャーします。
SELECT * FROM TABLE(SNAPSHOT_LOCK('SAMPLE',-1)) AS SNAPSHOT_LOCK
SNAPSHOT_TIMESTAMP
AGENT_ID
TABLE_FILE_ID
LOCK_OBJECT_TYPE
LOCK_MODE
LOCK_STATUS
LOCK_OBJECT_NAME
PARTITION_NUMBER LOCK_ESCALATION TABLE_NAME
TABLE_SCHEMA
TABLESPACE_NAME
-------------------------- -------------------- -------------------- -------------------- -------------------- ------------------- -------------------- ---------------- --------------- ----------------------------------- ------------------------------- --------------2004-01-26-13.59.01.788730
13
0
9
3
1
0
02004-01-26-13.59.01.788730
13
0
8
3
1
0
02 レコードが選択されました。
Fly UP