このドキュメントでは、データベースパフォーマンスのモニタリングとチューニングについて説明します。
次のトピックについて説明します。
データベースの完全性が維持され、かつ効果的なレベルのサービスが提供されていることを保証するため、継続してデータベース環境のモニタリングを行うのは DBA の役目です。 DBA の役割としては、さまざまな活動や手順が含まれます。このセクションでは、その中のいくつかを取り上げています。
DBA には、ある一定のレベルにデータベースパフォーマンスを保つ役目がありますが、これは重要で、しかも容易なことではありません。 サービスの低下を招く原因は数多くあり、多くの場合、それらを追求することは容易ではありません。原因が判明した場合でも、その調整には複雑なプロセスを要する場合があります。
DBA は、サービスの低下が起こる前にこれを予測したり、データベースのオペレーションや設計を規則的に制御された方法で調整する一連の手順を設定したりしなければなりません。 これらの手順には以下の活動が含まれます。
サービスの低下を引き起す可能性のある原因の識別
データベースパフォーマンスをモニタするツールの設定
調整作業
新しい要求に応えるためのデータベースの実装または再設計
DBA は、データ処理部門とユーザー部門のマネジメントに対して、データベースの使用とパフォーマンスに関してレポートを作成し、定期的に報告する義務があります。 このレポートに含まれる情報は、できるだけ事実に沿ったものでなくてはならず、同時にデータベース環境に対するチューニングの勧告も含まれていなくてはいけません。 チューニングは組織全体には利益をもたらしますが、一部のユーザーにはサービスの低下になることもあります。 したがって、チューニングに関する決定は、影響を受けるユーザーのことを考慮しなければなりません。
DBA は、データベースの完全性を保証するために適切な制御方法を設定し、これをモニタしなければなりません。
このコンピュータが作成する管理情報(コントロールトータル)がコンピュータ処理実行時間や生成レポートについてチェックするときに役立ちます。 バッチレスポンス(または問い合わせ)では、実行時間、サーチパラメータ、最終データ更新時刻およびプライマリパラメータコントロールのような情報を含みます。 これは、信頼レベルを高め、データベースの完全性を保証するうえで役に立ちます。
コントロールトータルの問題は、インストールによってその形態もさまざまです。 そのため、これについて厳しい固定的な規則を作成するのは不可能といえますが、 一般的な指針であれば設定することはできます。
データベースを使用する各アプリケーションシステムの設計時に、DBA は次のような考慮がされているかを確認する必要があります。
各バッチ更新処理の実行時、どのようなチェックを行えるか。 例えば、レコード件数、追加、削除、更新を行うときなど。
これらをチェックするのにどんな制御がファイル全体にわたって必要か。 例えば、値フィールドのハッシュトータルなど。
ある期間の終わりに、コントロールトータルを調べ誤りであることがわかったとき、データを回復するためにどんな入力トランザクション、Adabas ログ等を保持しておかなければならないか。
地域別のコントロールトータル(支店別、製品グループ別)から、ファイルコントロールトータルエラーの影響を受ける領域を特定できるか。
次の表に、使用する統計のモニタリングのいくつかとデータベース環境に対する調整(またはチューニング)を示します。
変化するもの | 必要なチューニング | ||||
---|---|---|---|---|---|
データベースの構造 | 使用するアクセスメソッド | ハードウェアまたはソフトウェア構成 | 処理優先度 | ディスクストレージ割り当て | |
端末およびライントラフィック | X | X | X | X | |
レスポンスタイム(アプリケーションのパフォーマンス) | X | X | X | X | X |
ユーザーおよびディスクリプタによる総アクセス | X | X | X | ||
データベースサイズ | X | X | X | X | |
データベースの成長度 | X | X | X | X |
本番データベースに何らかの変化があったときは、信頼性や完全性を高度に保つよう十分な注意が必要です。 何が変化しても、DBA は正しい判断を下しそれが正確に行われるよう保証しなければなりません。 チューニング処理に対して DBA は絶対的なコントロールを持ち、正式な受入れ手順に沿っているかを確認しなければなりません。
上の表中の項目の変化について過度に対応することがないよう DBA は注意しなければなりません。 ライントラフィックやレスポンスタイムなどが突然変化した場合、一時的な現象かもしれないので、 通常のオペレーティング状態でしばらく様子を見て、恒久的な傾向なのか一時的な現象なのかを判断することをお勧めします。 もう 1 つの表の見方として、新規プロジェクトの導入により、端末およびライントラフィック、レスポンスタイムなどに大幅な変化がみられるとき、チューニングが必要になる可能性があるのかどうかを確認することもできます。DBA は、新規アプリケーションシステムを実装する前に、これらの影響を最小限にとどめるように対応できます。
Adabas ニュークリアスの Adabas コマンドログオプションを使って、Adabas に対してユーザーが出した全コマンドに関する情報を生成できます。
得られる情報には、以下のものが含まれます。
ユーザー ID
日付、時間
使用されたコマンド
アクセスされたファイル
アクセスされたレコード
受け取った Adabas レスポンスコード
コマンドの実行にかかった時間
この情報を参照することで、データベースのアクティビティについて詳しく把握することができます。 この情報は、ユーティリティ ADACLP を使用することにより表示できます。
showipc は、DBA が UNIX カーネルの IPC 構成を見たり、Adabas/Entire Net-Work の IPC 構造を見たり、それらを削除するのに使用するツールです。 各データベースに対して、そのデータベースに関連する共有メモリ、メッセージキュー、セマフォを showipc は表示します。
次のオプションを利用できます。
showipc [-adfhiksv] [-e<string>] [-g<g_name>] [-r<sec>] [-u<u_name>] [<dbid>...]
1 つ以上の <dbid> 引数を使用できます。 <dbid> が省略された場合、showipc はすべてのアクティブなデータベースに対する IPC 構造を処理します。 有効な DBID を表す数値に加えて、文字列 CSCI、ACS、U も使用できます。 CSCI(Client Server Communication Interface)を指定すると、CSCI ユーザーの全 IPC エレメントの情報が返されます。 ACS が指定されると、NETACS(NET-WORK アクセスサーバー)が使用している IPC エレメントの情報が返されます。 U は、データベースを関連付けることができないすべての要素を示します(データベース不明)。
また showipc は、複数の論理 NET-WORK ノードをサポートしています。 NET-WORK の IPC 構造は、<dbid> ゼロと NET-WORK ID によって識別されます。 -a および -e オプション(下記説明を参照)が使用されない場合は、デフォルトの NET-WORK ID に関する情報が表示されます。 環境変数 NET_WORK_ID が設定されていると、一致する NET-WORK ID も処理されます。
次の表は提供されているさまざまなオプションの意味について説明しています。
オプション | 説明 |
---|---|
-a | 同時に稼動している論理 NET-WORK の全ノードの構造を表示します。 |
-d | -k オプションとともに使用します。データベース用の IPC エレメントが残っていない状態であっても、IPC ドライバのリソースを強制的に削除します。 -d オプションは、常にデータベース ID が必要になります。 注意: |
-e<string> | 情報を表示させる NET-WORK ID を指定します。 NET-WORK ID の最初の文字はユニークでなければいけないので、<string> のそれぞれの文字が 1 つの NET-WORK ID として認識されます。 |
-f | -k オプションとともに使用します。これは NETACS と CSCI(その他のものは削除されない)のエレメントを強制的に削除します。 |
-g<g_name> | デフォルトユーザー('sag'、'adabas'、'natural'、'esq'、$SIPGROUP)の代わりに、グループ <g_name> が所有している IPC エレメントを探します。 |
-h | showipc の使用方法について説明するヘルプ画面を表示します。 |
-i | -k オプションとともに使用します。これは IPC エレメントを削除する前に、削除の確認をします。 |
-k | 使用されていない IPC エレメントを削除します。 削除する前に、データベースの GCB 共有メモリが使用中かどうかを、showipc はチェックします。 まだ使用中なら、削除をやめます。 Software AG では、-k オプションとともに -i オプションを使用するのをお薦めします。 |
-r<sec> | <sec> 秒ごとに指定されたコマンドを繰り返します。 Crtl キーと C キーを同時に押すと、コマンドの実行が終了します。 |
-s | 実行中の UNIX カーネルの IPC 構成値を表示します。 これは UNIX カーネルが正しく構成されているかのチェックにも役立ちます。 |
-u<u_name> | デフォルトユーザー('sag'、'adabas'、'natural'、'esq'、$SIPUSER)の代わりに、ユーザー <u_name> が所有している IPC エレメントを探します。 |
-v | データベースの詳細な情報を表示します。 |
デフォルト出力の最初の列には、NET-WORK の場合には "NET"(デフォルトの NET-WORK ID でなければ NET-WORK ID に伴います)、NETACS の場合は "NACS"、CSCI の場合は "CSCI"、対象データベースの DBID の数値のいずれかが表示されます。 この後に、データベースに対する IPC エレメントのリストが続きます。 各エレメントのエントリは、そのタイプを示す略語、区切りを表すコロン、そのエレメントの IPC ID から構成されます。 この ID は ipcrm コマンド(showipc -k <dbid> の方がもっと便利ですが)で使用されます。 以下の略語が使用されます。
ATB | アタッチバッファ共有メモリ |
CSA | 共通共有エリア |
CSM | CSCI 共有メモリ |
DRV | Adabas IPC ドライバ共有メモリ |
GCB | ジェネラルコントロールブロック |
GDT | グローバルデータベース(Net-Work) |
OPR | ADAOPR(CSA= オプション使用時)によって作成された共有メモリ |
PHx | ID x を持つプロトコルハンドラ |
ESi | Adabas SQL サーバー共有メモリ ID の i |
CLM | コミュニケーションクライアントメッセージキュー |
CSQ | CSCI メッセージキュー |
RSQ | ユーザーレスポンスキュー |
SRV | コミュニケーションサーバーメッセージキュー |
SVQ | ニュークリアススレッドキュー |
USQ | ユーザー要求キュー |
CLS | コミュニケーションクライアントセマフォ |
CSS | CSCI セマフォ |
PSE | プライベートセマフォ |
SEM | 他のセマフォ |
ESQ | Adabas SQL サーバーセマフォ |
詳細出力形式(-v オプション)を指定すると、各エレメントに対する付加情報が表示されます。 データベースごとに 3 つの表(共有メモリ、メッセージキュー、セマフォごとに 1 つずつの表)が表示されます。 これらの表の列は次のような意味を持っています。
列 | 説明 |
---|---|
TYPE | IPC 要素のタイプ(省略形を参照) |
NI | NET-WORK ID(デフォルト以外の場合)。1 文字に切り捨てられることがあります。 |
ID | IPC ID |
SIZE | 共有メモリのサイズ(バイト単位) |
列 | 説明 |
---|---|
LOPPID | 最後に shmop() コールを処理したプロセスのプロセス ID |
CRPID | 共有メモリを作成したプロセスのプロセス ID |
ATTPROC | アタッチされたプロセスの数(オペレーティングシステムによって常にサポートされているわけではありません) |
列 | 説明 |
---|---|
TYPE | IPC 要素のタイプ(省略形を参照) |
NI | NET-WORK ID(デフォルト以外の場合)。1 文字に切り捨てられることがあります。 |
ID | IPC ID |
NBYTES | メッセージキューのバイト数 |
NMSGS | メッセージキューのメッセージ数 |
LSND | 最後にメッセージを送信したプロセスのプロセス ID |
LRCV | 最後にメッセージを受信したプロセスのプロセス ID。 |
列 | 説明 |
---|---|
TYPE | IPC 要素のタイプ(省略形を参照) |
NI | NET-WORK ID(デフォルト以外の場合)。1 文字に切り捨てられることがあります。 |
ID | IPC ID |
NETACS エレメントの場合には、TYPE 列は、NETACS ドメインを表す DOMN に置き換わります。
注意:
showipc はカーネルのメモリ構造を読み取るので、root 権限を持たせて showipc を実行しなければなりません。
実行カーネルにデフォルトの名前(例えば HP-UX の場合の /hp-ux など)がない場合、showipc は該当のエラーメッセージを発行して終了します。 この現象は環境変数 SIP_KERNAM に正しい名前を設定することで回避できます。例えば、csh
の場合は、setenv SIP_KERNAM '/mykernel' というように設定してください。
次の環境変数を showipc と組み合わせて使用できます。
環境変数 | 説明 |
---|---|
ADANOD | ここにはユーティリティ ADANOD のフルパス名を設定します。 メッセージ "could not find adanod" が表示された場合には、この環境変数を設定する必要があります(詳細については、メッセージの項を参照)。 |
NET_WORK_ID | ここにはデフォルトの NET-WORK ID に加えて処理する NET-WORK ID を設定します(詳細については、showipc の -e オプションと -a オプションを参照)。 |
SIP_KERNAM | ここには UNIX カーネルの名前を設定します(詳細については、前述の注意を参照)。 |
SIPGROUP | 環境変数 SIPGROUP を設定した場合、その内容がデフォルトグループのリストに付加されます(オプション -g を参照)。 |
SIPUSER | 環境変数 SIPUSER を設定すると、その内容がデフォルトユーザーのリストに付加されます(オプション -u を参照)。 例えば、SIPUSER に harry を設定すると、デフォルトユーザー(現在では sag、adabas、esq、natural など)、または harry に属するすべての IPC エレメントが表示されます。 |
これより、showipc 実行時に受け取るメッセージについて説明します。
Cleared up driver resources for DB xx | |
説明 |
showipc は、-k オプションを指定した場合、Adabas バージョン 2.1 以上の IPC 構造を削除するだけでなく、対応するデータベースの IPC ドライバのリソースも解放します。 |
対処 |
ありません。 |
Could not attach to global data area of database xxx | |
説明 |
データベース xxx の CSA が不整合を起こしているか、showipc に適したフォーマットになっていません。 |
対処 |
この問題がデータベース稼動時に起きたら、サポートセンターにご連絡ください。 |
Database yy of Adabas Vz.z might be incorrectly displayed by showipc V x.x | |
説明 |
データベースのバージョンが showipc のバージョンよりも新しいために、このデータベースの IPC 構造の出力が正しいかどうか不明です。 |
対処 |
より新しいバージョンの適切な showipc を使用します。 |
Db xx is of version ww - please use version ww of showipc to remove | |
説明 |
データベース xx のニュークリアスは、コール先の showipc よりも新しいバージョンです。 showipc はこのデータベースの IPC 構造を削除しません。 |
対処 |
より新しいバージョンの適切な showipc を使用します。 |
Found inconsistent data structures for DB xxx | |
説明 |
データベース xxx の内部データ構造が showipc と矛盾しています。 |
対処 |
データベースのバージョンをチェックします。 使用している showipc のバージョンよりデータベースのバージョンが新しい場合には、適切なバージョンの showipc を使用します。 それでも問題が発生する場合には、サポートセンターにご連絡ください。 |
GCB of DB xx still in use, I do not remove anything | |
説明 |
まだアクティブなデータベース(ニュークリアスが稼働中か、Adabas ユーティリティがアクセスしている)に対して showipc -k がコールされました。 IPC 構造は削除されません。 |
対処 |
どうしてもそのデータベースの IPC 構造を削除したい場合には、そのデータベースにアクセスしているプロセスを終了して(showipc -v <xx> を使用してどのプロセスかを確認してください)、再度実行してみてください。 |
GDT is still in use by DB xx; not removed | |
説明 |
少なくとも 1 つの GDT を使用しているデータベースがあります。これは、showipc では削除できません。 |
対処 |
ありません。 |
I do not remove private semaphores | |
説明 |
showipc は、指定したデータベースに関連しない Adabas セマフォを削除しません。 |
対処 |
ありません。 Adabas ユーティリティの失敗/異常終了で残ったセマフォは ipcrm を使用して削除できます。 |
NET-WORK xx still running, I do not remove anything | |
説明 |
指定された ID を持つ NET-WORK がまだアクティブです。 showipc はこの NET-WORK ID に関連する IPC 構造を削除しません。 |
対処 |
ありません。 |
Sorry, but this program has to be run with supervisor privileges | |
説明 |
showipc 実行可能ファイルに正しい権限が設定がされていません。 ユーザー ID の権限が設定され、オーナーは root でなければなりません。 |
対処 |
権限をチェックし、必要であれば、権限を正しく設定してください。 |
Sorry, I will remove CSCI elements only with -f option | |
説明 |
-f オプションを使用すると、CSCI エレメントだけが削除されます。 |
対処 |
-k オプションに -f オプションを追加します。 |
Sorry, I will remove CSCI elements only with -f option | |
説明 |
-f オプションを使用すると、NET-ACS エレメントだけが削除されます。 |
対処 |
-k オプションに -f オプションを追加します。 |
Structure mismatch for DB xx - Cannot identify version | |
説明 |
問題のデータベースの内部データ構造を正しく解釈することができません。 |
対処 |
このメッセージは、データベースの起動中に発生することがあります。この場合は無視してかまいません。 |
Warning: could not find adanod for clean up of Adabas driver | |
説明 |
Adabas IPC ドライバリソースを削除するときに、ユーティリティ adanod が必要になります。 |
対処 |
環境変数 ADANOD に adanod をフルパス名で設定してください。 |
Warning: Found <structure> with invalid database ID xx contained | |
説明 |
関連ユーザーの 1 人に属する構造が間違ったキーを持っています。 その構造とは、共有メモリ、メッセージキュー、セマフォのどれかです。 |
対処 |
該当する構造を作成したプロセスをチェックします(showipc は作成したプロセスのプロセス ID を表示します)。 そのプロセスが Software AG 製品でない場合は、Adabas に干渉しないようにその製品を修正してください。 そのプロセスが Software AG 製品の場合は、サポートセンターにご連絡ください。 |
Warning: Some NET-WORK IDs may be displayed truncated to one character | |
説明 |
showipc の -e または -a オプション使用時に、showipc はいくつかの NET-WORK ID の中から 1 文字だけ取り込みました。 NET-WORK ID は最初の 1 文字でユニークかどうかを判断します。 |
対処 |
環境変数 NET_WORK_ID を適宜、設定することによって、他の NET-WORK ID も対象にできます。 |
showipc
すべての Adabas データベースおよびデフォルトの NET-WORK ID の IPC 構造を表示します。
showipc -av
すべての Adabas データベースおよびすべての論理 NET-WORK ID の IPC 構造を詳細表示形式で表示します。
showipc -ki 127
データーベース 127 のニュークリアスが稼動していなければ、そのデータベースの IPC 構造をすべて削除します。 削除する前に、確認メッセージが表示されます。
showgdt は、DBA がグローバルデータベーステーブル(GDT)の現在の状態を見るために使用するツールです。 その表示には、ローカルノード上のすべてのデータベースが含まれます。 GDT とは、周知(ローカルおよびリモート)のデータベースを管理するのに使用される、ノード固有のデータ構造を指します。
GDT には各データベースについての次のようなエントリが含まれます。
ローカルノード上でアクティブなデータベース
ローカル Entire Net-Work で定義されているデータベース
リモートノード(接続先のノード)からローカルノードにアタッチされているデータベース
showgdt は、アクセス可能なデータベースの概要を表示します。 ヘッダーには GDT の NET_WORK_ID、作成日時、GDT を最初に作成したオブジェクトといった一般的な情報が含まれます。 ローカルシステムが認識している各データベースに対して、そのバージョン番号(バージョン 2.x のデータベースであれば 2)、ステータス情報、付加的なステータス固有のデータが、リスト形式で表示されます。 ステータス情報は次の内容を示します。
ステータス | 説明 |
---|---|
NETWIDE | ローカル Entire Net-Work で定義されている。 |
REMOTE | リモートノード上で稼動している。ローカルノードにアタッチされている。 |
LOCAL | ローカルノード上で稼動している。 |
リモートノードにデータベースがアタッチされている場合、リモートノードが NETWIDE として定義されているかどうかについても示します。
カスタマサイトで障害が発生した場合、Software AG では、迅速な解決のためにできる限りの努力をします。 障害の分析に必要な時間を最小にして、解決策を提供するため、担当者は障害についての詳細な情報を必要とします。
標準的な障害情報には次の項目が含まれます。
障害について
使用した Adabas コンポーネントまたは機能
エラーメッセージ(メッセージ ID)
障害の簡単な説明
環境について
Adabas バージョン
施した修正
オペレーティングシステムのバージョン
ハードウェア環境(CPU タイプ、ディスクデバイスタイプなど)
障害の再現について
再現するための手順
再現に必要なデータ
障害が再現しない場合、障害情報には次の項目も必要です。
障害が発生した場所
すべてのデータベースに発生するのか、または単一データベースだけに発生するのか
特定環境のデータベースだけに発生するのか
障害が発生しない環境
障害発生のタイミング
常に発生するのか、または散発的に発生するのか
他のイベントと並行して発生するのか
障害が発生しない期間
最初に発生したのはいつか
その頃に行われた環境の変更
それ以前で最後に行われた環境の変更
データ破壊の障害について
データベースチェックが正常に実行された最終日付
ファイルが破壊された状態で使用したユーティリティ(チェックポイントリスト)
発生したディスク障害
その障害の性質によって、テープで提供された情報が障害分析に必要です。 Software AG サポートがテープの内容をコピーする最適の環境を構築できるように、テープの内容の記述を加える必要があります。 データのアンロードのために十分なディスクスペースを割り当てなければならないので、テープに大量データが含まれている場合、これは特に重要なことです。 障害データを提供すること、ファイルを選択してコピーできるように傷害データに関する説明を記述することが必要です。
テープドキュメントに記述する内容は、テープのラベル、サイズも含めた全ファイルのリストです。 バックアップがテープに含まれている場合、それぞれのバックアップに応じた情報を分けておく必要があります。
提供すべき障害データは障害の種類に依存します。 次の障害カテゴリのいずれかに割り当ててください。
ニュークリアスの異常終了
ニュークリアス自動再スタートの異常終了
ユーティリティの異常終了
データ破壊障害
その他の障害
次のような障害データをテープで提供してください。
ADABAS.xxx グローバルセクションファイル
ADANUC ログファイルおよび処理ダンプ
ADANUC および ADASHR のイメージ
データベースレイアウトおよびファイル情報(ADAREP)
プロテクションログおよびコマンドログファイル(有効な場合)
次のような障害データをテープで提供してください。
ニュークリアスの異常終了時にメッセージに表示されたファイル
自動再スタートデータを含んでいる WORK のコピー
次のような障害データをテープで提供してください。
ユーティリティ出力(ログファイル)および処理ダンプ
ユーティリティおよび ADASHR のイメージ
データベースレイアウトおよびファイル情報(ADAREP)
入力および出力ファイル
次のような障害データをテープで提供してください。
プロテクションログ
ユーティリティ使用情報(チェックポイントリスト)
破壊の種類についての情報(ADAVFY 出力または破損のための異常終了についての情報)
次のような障害データをテープで提供してください。
障害を再現するために有効な情報
その他に有効な情報があるかどうかについては、Software AG サポートにお問い合わせてください。