システム・モニター 手引きおよび解説書

区分データベースに関する考慮事項

データベースの区分が 1 つまたは複数のどちらであるか、 および照会内並行処理が使用されているかどうかに関係なく、 どのタイプのシステムでもデータベース・システム・モニター・インターフェースは同じです。 すべてのシステムについて同じコマンドおよび API を使用しますが、 データが単一ノードについて収集されたのか、 すべてのノード (グローバル) について収集されたのかを指定することができます。

複数ノードのシステムでスナップショットを取る

デフォルトの場合、区分内並行処理を使用しているシステムでは、 スナップショットを取ると、 アプリケーションの接続先のインスタンスのカタログ・ノードだけからモニター・データが戻されます (複数ノードでのスナップショットの取得については、 グローバル・スナップショットを取るを参照してください)。 たとえば、ある表が 2 つのデータベース区分に分かれており、 その一部の行が一方のノード (ノード 100) に格納され、 残りの行が他方のノード (ノード 200) に格納されているとします。




sqlf0106

ノード 200 でスナップショットを取ると、初めはデータは戻されません。
注:LIST APPLICATION コマンドではデータベース・システム・モニターを使用します。 このコマンドを呼び出すと、 実際には要求タイプ SQLMA_APPLINFO_ALL のスナップショット API db2GetSnapshot() が呼び出されます。




sqlf0206

この時点でノード 100 から照会を発行すると、 ノード 200 に対する副次接続により、その区分内の行が取り出されます。




sqlf0107

この時点で、ノード 200 上で実行しているアプリケーションのサブエージェントが 1 つあります。




sqlf0207

また、ノード 100 上で実行しているエージェントは 2 つあります (調整プログラム・エージェントとサブエージェント)。




sqlf0108

非調整ノードでは、以下の内容から、調整プログラムがある場所を判別したり、 スナップショットを発行したノードでアプリケーションが開始したかどうか調べたりすることができます。




sqlf0208

戻された Application Handle 値 6553638 は、 すべてのノードについて固有です。 Node Number は、 db2nodes.cfg 構成ファイルにリストされているノードの 1 つに対応します (管理の手引き を参照)。

アプリケーション・ハンドルの使用時に、 任意のノードに関するモニター情報を要求するには、 GET SNAPSHOT FOR APPLICATION を発行します。このコマンドは、 アプリケーションが対象ノードに接続されている場合にデータを戻します。 アプリケーションの強制実行 (FORCE) もできます。 このコマンドはどのノードからでも発行できます。




sqlf0209

グローバル・スナップショットを取る

複数ノード・システムでは、現行ノード、指定したノード、 または区分データベース内のすべてのノードのスナップショットを取ることができます。 区分環境のすべてのノードに渡ってグローバル・スナップショットを取る場合は、 結果が戻される前にデータが統合されます。

データは、以下のようなさまざまなエレメント・タイプについて統合されます。

さらに、カウンターのリセット、モニター・スイッチの設定、 個々のノードまたは区分環境内のすべてのノードのモニター・スイッチ設定値の検索も行うことができます。
注:グローバル・スナップショットを取る際に、1 つ以上のノードでエラーが生じると、 データはスナップショットを正常に取ることのできたノードから収集され、 さらに警告 (sqlcode 1629) が戻されます。 モニター・スイッチのグローバル取得または更新が失敗したり、 1 つ以上のノードでカウンター・リセットが失敗すると、 それらのノードではスイッチの設定やデータのリセットは行われません。

複数ノードのシステムでイベント・モニターを使用する

イベント・モニターは、 オペレーティング・システムのプロセスまたはスレッドを使用して、トレースを作成します。 このプロセスまたはスレッドを実行しているノードのことを、 モニター・ノードといいます。 イベント・モニターは、モニター・ノード上でローカルに起こったイベントをモニターしたり、 DB2 データベース・マネージャーを実行しているすべてのノードで起こったイベントをグローバルにモニターしたりします。 グローバル・イベント・モニターは、すべてのノードの活動を含むトレースを 1 つ作成します。

イベント・モニターがローカルまたはグローバルのどちらであるかは、 モニター・スコープとして示します。 モニター・ノードとモニター・スコープは、 ともにイベント・モニターの定義の一部です。 たとえば、次のようにします。




figure sqlf0112

グローバル・イベント・モニターの場合は、 システム内のすべてのノードで起きたデッドロックが報告されます。 このモニターの I/O 構成要素は物理的にはノード 5 で実行され、 このノードの /tmp/dlocks ディレクトリー内のファイルにレコードが書き込まれます。

このモニターの定義は、システム・カタログにあります。




figure sqlf0113

戻り情報には、イベント・モニター DLOCKS がグローバルとして定義されており、 モニター・ノードが 5 であることが示されています。
注:デッドロック・イベント・モニターだけはグローバルとして定義できますが、 他のイベント・モニターはすべてローカルとして定義しなければなりません。

サブセクションのモニター

区分内並行処理を使用しているシステムでは、SQL コンパイラーによって、 SQL ステートメントのアクセス・プランがサブセクションに区分化されます。 個々のサブセクションは別々の DB2 エージェントによって実行されます。

コンパイル時に DB2 コード生成プログラムによって生成される SQL ステートメントのアクセス・プランを取得するには、 db2expln コマンドか dynexpln コマンドを使用します (コマンド解説書 を参照)。 一例として、複数のノードに区分化されている表の行をすべて選択すると、 アクセス・プランは以下の 2 つのサブセクションに分けられます。

  1. サブセクション 0。 調整プログラム・サブセクション。この役割は、 他の DB2 エージェント (サブエージェント) に取り出された行を収集してアプリケーションに戻すことです。
  2. サブセクション 1。この役割は、表スキャンを実行して、 行を調整エージェントに戻すことです。

この単純な例では、サブセクション 1 はすべてのデータベース区分に分散されます。 この表が属するノード・グループの個々の物理ノードに、 このサブセクションを実行するサブエージェントがあります。 この概念の詳細については、管理の手引き を参照してください。

データベース・システム・モニターを使用すると、 実行時の情報とアクセス・プラン (コンパイル時の情報) を相関させることができます。 区分内並行処理により、情報がサブセクションのレベルに分類されます。 たとえば、ステートメント・モニターのスイッチが ON になっている場合に、 GET SNAPSHOT FOR APPLICATION を実行すると、ステートメント全体の情報と、 このノード上で実行される個々のサブセクションに関する情報が戻されます。

アプリケーションのスナップショットを実行すると、 以下のサブセクション情報が戻されます。

この情報は、ステートメント・イベント・モニターによって、 サブセクションごとに実行完了後に記録されます。 この情報には CPU 使用量、合計実行時間、および他の複数のカウンターが含まれます。


[ ページのトップ | 前ページ | 次ページ | 目次 | 索引 ]