この章ではデータベース管理ユーティリティ empadmの機能について説明します。 このユーティリティはデータベースの管理機能を実行するために利用されます。 empadmを使って、データベース管理者(DBA)は以下のことが可能です。
empadmユーティリティは 他のユーザーのデータベースアクセスを制限するための データベース管理者に許可する2つのオプションを提供します。
dbamode オプションはデータベースにアクセスする複数の DBAプロセスを許可します。 すべての 非DBAプロセスはデータベースアクセスを制限されます。
シングルモードオプションは 1つのDBA プロセスのみ、 データベースアクセスを許可します。 他のプロセスはデータベースアクセスを制限されます。
DBA モードは データベース管理者(DBA)のみにデータベースアクセスを 制限することを意味します。 その際、DBA プロセスは複数、同時にデータベースにアクセスすることができます。 以下のコマンドはデータベース管理者のみ発行することができます。
empadm database_name dbamode [on] [-i N| -q]
ここでのポイントは、
報告する間隔は、N秒ですが、 empadmは、非DBAプロセスを毎秒ごとにチェックします。 Nに "0" または "-q"が指定された場合、 empadmはユーザーリストを出力しません。
特権の持つすべてのユーザーにデータベースを有効にするためには (DBAモードを終了するには)、 以下のコマンドを使います。
empadm database_name dbamode off
シングルユーザーモードは、 データベースアクセスを要求した単一のDBAプロセスのみに 制限すること意味します。
empadm database_name singlemode [-i N| -q] ["shell_command"]
ここでのポイントは、
empadmが、すべてのプロセスがデータベースのアクセスを 終了するのを待っている間、 データベースに現在アクセスしているユーザーリストを N 秒ごとに出力します。 その秒数は-iオプションで定義され、デフォルトでは 10 秒です。 empadmは、ユーザーに対してデータベースへのアクセスを 終了させるための通知をしません。よって、DBAは、ユーザーに直接伝えるか、 待つことを選ぶことになります。
報告する間隔は、N 秒ですが、 empadmは、プロセスを毎秒ごとにチェックします。 N に "0" または "-q"が指定された場合、 empadmはユーザーリストを出力しません。
shell_commandが指定されていない場合、 empadmは対話モードで実行し、 シェルコマンドが指定された場合はバッチモードで実行します。
データベースのアクティブロック情報はempadmユーティリティの以下のオプションを 使うことでレポートされます。
"lockinfo"オプションは、アクティブロックおよび これらのロックを保持するプロセス、 またロックマネージャについての情報を提供します。
empadm database_name lockinfo [table_name ...]
以下にサンプル出力を示します。
Lock Managers Table name Lock Man. Name Type MAXPROCS NBUCKETS NLOCKS sys_attr_privs 00005.lck F 32 11 200 sys_attrs 00003.lck F 32 11 200 sys_dictionary 00001.lck F 32 11 200 sys_privs 00004.lck F 32 11 200 sys_tables 00002.lck F 32 11 200 t1 00006.lck F 32 11 200 t2 00007.lck F 32 11 200 Active Locks Table name Type Record# Status Empress ID sys_dictionary ADMIN --- r 2086626528 sys_dictionary ADMIN --- r 957829758 sys_dictionary RECORD 6 r 2086626528 sys_dictionary ALLRECS --- rr 2086626528 sys_dictionary ALLRECS --- rr 957829758 sys_dictionary RECORD 7 r 957829758 t1 ALLRECS --- rr 2086626528 t1 ADMIN --- r 2086626528 t1 RECORD 2 r 2086626528 t1 RECORD 1 r 2086626528 t2 ADMIN --- r 957829758 Empress ID Process ID Username 957829758 4261 joe@gold.empress.com 2086626528 4281 joe@gold.empress.com
最初に表示されるロックマネージャのレポートは、 各テーブルのロックマネージャについての情報を表示します。
Lock Man. Nameは、テーブルのロック情報を管理するファイル名。
Typeフィールドはロックマネージャの種類を指します。
MAXPROCSは、同時にテーブルにアクセス可能な最大プロセス数。
NBUCKETSは、ロックマネージャのハッシュバケット数。
NLOCKSは、ロックマネージャによって管理可能な同時ロック最大数。
次に表示されるアクティブロックのレポートは、データベース内のすべてのアクティブなロックに ついての情報を表示します。
Typeは、ロックタイプ。種類としてADMIN, CRIT、 RECORD、 ALLRECSがあります。
Record#フィールドは、 ロックされているテーブルのレコードを示します。 "---" は、ロックがテーブル全体に適用していることを意味しています。
Status フィールドは、 "r" (read)、 "rr"(deferred read)、 "u" (update)、 "uu" (deferred update) の1つになります。
Empress ID フィールドは、 このロックを保持しているEmpressプロセスを示します。
最後に表示されているレポートは EmpressプロセスのオペレーティングシステムID を表示することでユーザーを支援します。
Empress IDフィールドは、ロックを保持している Empressプロセスを示します。
User name は、 Empressプロセスを実行しているオペレーティングシステムの ユーザー名。
Process IDは、EmpressプロセスのオペレーティングシステムID。
Host IDは、Empressプロセスを実行している マシンのネットワークアドレス。
"lockbrief"オプションは、アクティブロックおよび これらのロックを保持するプロセスについての情報を提供します。
empadm database_name lockbrief [table_name ...]
以下にサンプル出力を示します。
Active Locks Table name Type Record# Status Empress ID sys_dictionary ADMIN --- r 2086626528 sys_dictionary ADMIN --- r 957829758 sys_dictionary RECORD 6 r 2086626528 sys_dictionary ALLRECS --- rr 2086626528 sys_dictionary ALLRECS --- rr 957829758 sys_dictionary RECORD 7 r 957829758 t1 ALLRECS --- rr 2086626528 t1 ADMIN --- r 2086626528 t1 RECORD 2 r 2086626528 t1 RECORD 1 r 2086626528 t2 ADMIN --- r 957829758 Empress ID Process ID Username 957829758 4261 joe@gold.empress.com 2086626528 4281 joe@gold.empress.com
最初に表示されているレポートは、 データベース内のすべてのアクティブなロック についての情報を表示します。
Typeは、ロックタイプ。種類としてADMIN, CRIT、 RECORD、 ALLRECSがあります。
Record#フィールドは、 ロックされているテーブルのレコードを示します。 "---" は、ロックがテーブル全体に適用していることを意味しています。
Status フィールドは、 "r" (read)、 "rr"(deferred read)、 "u" (update)、 "uu" (deferred update) の1つになります。
Empress IDフィールドは、ロックを保持している Empressプロセスを示します。
最後に表示されているレポートは EmpressプロセスのオペレーティングシステムID を表示することでユーザーを支援します。
Empress IDフィールドは、ロックを保持している Empressプロセスを示します。
User name は、 Empressプロセスを実行しているオペレーティングシステムの ユーザー名。
Process IDは、EmpressプロセスのオペレーティングシステムID。
Host IDは、Empressプロセスを実行している マシンのネットワークアドレス。
"lockmanagers" オプションは、 ロックマネージャとアクティブロックついての情報を提供します。
empadm database_name lockmanagers [table_name ...]
以下にサンプル出力を示します。
Lock Managers Table name Lock Man. Name Type MAXPROCS NBUCKETS NLOCKS sys_attr_privs 00005.lck F 32 11 200 sys_attrs 00003.lck F 32 11 200 sys_dictionary 00001.lck F 32 11 200 sys_privs 00004.lck F 32 11 200 sys_tables 00002.lck F 32 11 200 t1 00006.lck F 32 11 200 t2 00007.lck F 32 11 200 Active Locks Table name Type Record# Status Empress ID sys_dictionary ADMIN --- r 2086626528 sys_dictionary ADMIN --- r 957829758 sys_dictionary RECORD 6 r 2086626528 sys_dictionary ALLRECS --- rr 2086626528 sys_dictionary ALLRECS --- rr 957829758 sys_dictionary RECORD 7 r 957829758 t1 ALLRECS --- rr 2086626528 t1 ADMIN --- r 2086626528 t1 RECORD 2 r 2086626528 t1 RECORD 1 r 2086626528 t2 ADMIN --- r 957829758
Lock Managersのレポートでは、各テーブルのロックマネージャの情報を表示します。
Lock Man. Nameは、テーブルのロック情報を管理するファイル名。
Typeフィールドはロックマネージャの種類を指します。
MAXPROCSは、同時にテーブルにアクセス可能な最大プロセス数。
NBUCKETSは、ロックマネージャのハッシュバケット数。
NLOCKSは、ロックマネージャによって管理可能な同時ロック最大数。
Active Locksのレポートでは、 データベース内のすべてのアクティブロックについての情報を表示します。
Typeは、ロックタイプ。種類としてADMIN, CRIT、 RECORD、 ALLRECSがあります。
Record#フィールドは、 ロックされているテーブルのレコードを示します。 "---" は、ロックがテーブル全体に適用していることを意味しています。
Status フィールドは、 "r" (read)、 "rr"(deferred read)、 "u" (update)、 "uu" (deferred update) の1つになります。
Empress IDフィールドは、ロックを保持している Empressプロセスを示します。
"locksactive"オプションは、アクティブロックのみの情報を提供します。
empadm database_name locksactive
以下にサンプル出力を示します。
Active Locks Table name Type Record# Status Empress ID sys_dictionary ADMIN --- r 2086626528 sys_dictionary ADMIN --- r 957829758 sys_dictionary RECORD 6 r 2086626528 sys_dictionary ALLRECS --- rr 2086626528 sys_dictionary ALLRECS --- rr 957829758 sys_dictionary RECORD 7 r 957829758 t1 ALLRECS --- rr 2086626528 t1 ADMIN --- r 2086626528 t1 RECORD 2 r 2086626528 t1 RECORD 1 r 2086626528 t2 ADMIN --- r 957829758
Active Locksのレポートでは、 データベース内のすべてのアクティブロックについての情報を表示します。
Typeは、ロックタイプ。種類としてADMIN, CRIT、 RECORD、 ALLRECSがあります。
Record#フィールドは、 ロックされているテーブルのレコードを示します。 "---" は、ロックがテーブル全体に適用していることを意味しています。
Status フィールドは、 "r" (read)、 "rr"(deferred read)、 "u" (update)、 "uu" (deferred update) の1つになります。
Empress IDフィールドは、ロックを保持している Empressプロセスを示します。
データベースのロックマネージャについての統計情報は、empadmの "lockstats"オプションを使うことでレポートされます。
empadm database_name lockstats [table_name ...]
デフォルトでは、これらの統計情報は利用できません。 統計情報の収集を始めるためには、 データベース管理者は、データ辞書"tabzero"ファイル内の MSDBLOCKSTATS変数に設定する必要があります。
統計情報の収集を始めるために この変数に何かの値を(例えばMSDBLOCKSTATS=on)設定します。 デフォルトでは、この変数は設定されていません。理由として 統計情報の収集の要求はオーバヘッドになるためです。
累積したロックの統計情報をリセットするには "lockrststats"オプションを使用します。
empadm database_name lockrststats
このコマンドの実行後、すべてのロックの統計情報は "0" に 初期化され、そして、再び収集を始めます。
以下に"lockstats"のサンプル出力を示します。
Table name: temperatures Lock Man. Name Type MAXPROCS NBUCKETS NLOCKS 00018.lck F 32 11 200 NPROCS MAXNPROCS CURNLKS MAXNLKS EFFICIENCY 1 2 0 4 100% # buckets % of hits 2 73% 3 87% 97% # hits # buckets bucket # 0 6 0, 1, 3, 4, 5, 9 14 1 10 54 1 2 74 1 7 150 1 8 244 1 6 Max. chain length # buckets bucket # 0 6 0, 1, 3, 4, 5, 9 1 4 2, 8, 7, 10 2 1 6
以下は各フィールドの説明です。
Lock Man. Nameは、ロックマネージャ名です。 ロックマネージャがファイルの場合は、 database/_lock/ディレクトリのファイル名になります。 ロックマネージャがシェアードメモリの場合は、 シェアードメモリロックマネージャパーティション名になります。
Typeは、ロックマネージャのタイプです。 ファイルの場合、"F"になり、 シェアードメモリの場合は"P"です。
MAXPROCSは、 このロックマネージャに同時に使用可能な 最大Empressプロセス数です。
NBUCKETSは、 ロックマネージャのハッシュバケット数です。 この値は、ロックを管理するための適切な数として Empressによって計算された値です。 そのため、この値はEmpress Software Inc.の コンサルティングなしに変更すべきではありません。
NLOCKSは、 ロックマネージャによって管理可能な同時ロックの総数です。
NPROCSは、現在、ロックマネージャにアクセスしているプロセス数です。
MAXNPROCSは、ロックマネージャを同時に 利用した最大プロセス数です。
CURNLKSは、 現在、ロックマネージャによって管理されているアクティブロック数です。
MAXNLKSは、ロックマネージャによって管理された最大同時ロック数です。
EFFICIENCYは、 理想的なハッシュバケットのチェーンの長さがどのくらいの数の操作によって、 越えたのかを示します。 理想的なハッシュバケットのチェーンの長さは、 アクティブロック数をバケット数で割り、 Empress変数MSTHRESCHAINLENの値を 掛けた値になります。 例として、99% の"EFFICIENCY"は、 理想的なハッシュバケットのチェーンの長さを越えたロック操作は1% 存在するという意味になります。 この数字が70%未満に下がる場合、 Empress Software Inc.に コンサルティングを要請したほうがよいかもしれません。
# buckets と% of hitsは、 どのくらいの数のバケットが、ロックをあるパーセンテージ(90%以上の値まで) で保持するために必要とされるかを示すことにより、 ロックがハッシュバケットによってどのように分配されるかを示します。 例えば、ロックの 73% は、2 つのバケット内で見つかり、ロックの97% は 4 つのバケット内で見つかったことを表します。 これは、どの程度うまくロックがハッシュバケット間で配分されるかを 指示するために提供されています。 それぞれのバケットが、同じヒット数を持つことが理想的な配分になります。 例えば、2 つのバケットがロックの 73% を保持し、4 つのバケットがロックの 97%を保持していますが、これは非効率的に見えているかもしれませんが、 アクティブロックの最大数が 4 であることに注意すべきです。 言い換えれば、すべてのバケットを使用するロックは非常に少ないということに なります。
# hits、 # buckets と bucket #は、 各ハッシュバケットのヒット総数を示します。 2 つ以上のバケットが、同じヒット数である場合、 カンマによって分けられリスト表示されます。 例として、2つのバケット (#6 と #8)は、 最も多くのヒット数(それぞれ 244 と150)を占めています。 この数は、上の表でレポートされた数(# buckets vs. % of hits) のヒット総数(394 / 合計)の 73% と一致します。
Max. chain length, # buckets と bucket # は、各ハッシュバケットの最大チェーン長を示します。 2 つ以上のバケットが同じ最大チェーン長である場合、 カンマによって分けられリストされます。 バケットのチェーン長が理想的なチェーン長を超えた場合、 EFFICIENCYフィールドは、100%より少ない値になります。
途中終了したプロセスのロック (ダングリング・ロックとして表現されることがあります。)とは、 プロセスがロックをかけた状態で そのプロセスがシステムエラーおよびプロセスのクラッシュにより、 途中終了した場合にテーブル内にロックが残ることがあります。 "lockclear" オプションは、このような状況で残ってしまったロックを削除する ために利用します。
empadm database_name lockclear [-f] [empress_id ...]
"lockclear"は、"-f"オプション(強制的なクリアロック)を 指定しない限り、アクティブロックを削除しません。
"-f"オプションが指定された場合、 プロセスがアクティブな状態であっても、ロックはクリアされます。 そのため、このオプションを使用する場合は注意が必要です。 Empressのプロセスがアクティブな状態である場合、 そのプロセスのロックを削除すべきではありません。
引数のempress_idリストは、途中終了した Empressプロセスのリストを指定します。 通常、この途中終了したempress_idのリストは、 empadm database_name lockinfoのレポートから 取得します。
途中終了したプロセスのリストが指定されない場合、このコマンドを実行する ユーザーIDは、データベース管理者と一致しなければなりません。また、 途中終了したプロセスのリストが指定された場合は、 DBAか、あるいはロックを保持したempress_idの所有者と 一致しなくはなりません。
empadm database_name lockremove
シェアードメモリ・ロックマネージャが利用されている場合、 ディスクロックファイルはもはや必要ではありませんが、 このコマンドは有用です。 シェアードメモリロックにおいて、 これらのロックファイルを削除する必要はありませんが、 これを実行することは一般的な保守管理ではよいことです。 (余計なファイルをデータベース内に残さないという意味で)
"shmcreate"オプションは、 データ辞書 "tabzero"ファイル内に定義された シェアードメモリパーティションを作成するために 利用されます。
empadm database_name shmcreateシェアードメモリパーティションは、 それぞれのシェアードメモリパーティション定義ブロック によって作成されます。それが定義されない場合、作成されません。 シェアードメモリパーティションが既に存在している場合、 "empadm"はエラーメッセージを出力し、終了します。
このコマンドはデータベース管理者が 実行しなくてはならないことに注意してください。 また、シェアードメモリの詳細な情報はこのマニュアルの シェアードメモリ を参照してください。
"shmremove"オプションは、 データ辞書に定義されたシェアードメモリパーティションを 削除するために利用されます。
empadm database_name shmremove
シェアードメモリパーティションは、 それぞれのシェアードメモリパーティション定義ブロック によって削除されます。それが定義されない場合、削除されません。 シェアードメモリパーティションが存在しない場合、 "empadm"はエラーメッセージを出力し、終了します。
保護されたパーティションは、このコマンドでは削除されないことに 注意してください。 言いかえれば、パーティション記述ブロックの MSSHMPROTECTIONに値を設定することで シェアードメモリパーティションは削除されません。 また、このコマンドはデータベース管理者が 実行しなくてはならないことに注意してください。
"shmrmall"オプションは、すべてのシェアードメモリパーティションを削除します。
empadm database_name | |shmrmall |shmzap |
| | |
"shmrmall"は、 "shmremove"オプション と同じ機能を実行します。 また、保護されたパーティションを削除します。 言い換えれば、 データ辞書"tabzero"ファイルに定義された シェアードメモリをすべて削除し、 MSSHMPROTECTIONが設定されたものでさえ削除します。
"shmzap"は、 "shmrmall"と 同じ機能を実行しますが、 "tabzero"ファイルのパーティション定義も 合わせて削除します。
また、このコマンドはデータベース管理者が 実行しなくてはならないことに注意してください。
"shmrefresh" オプションは以下になります。
シェアードメモリが存在する場合
シェアードメモリが存在しない場合、 シェアードメモリパーティションを作成します。 これは"shmcreate"と同じ処理になります。
empadm database_name shmrefresh
"shmclear"オプションはデータ辞書 tabzeroファイルに 定義されたシェアードメモリパーティションの内容をクリアします。
empadm database_name shmclear
実行することにより、tabzeroファイル中の シェアードメモリパーティション定義ブロックが見つかるごとに クリアします。定義されていない場合は削除もされません。 シェアードメモリパーティションが存在しない場合は、 empadmは、エラーメッセージを出力し、終了します。
このコマンドはマップファイルおよびグローバルバッファパーティションのみを クリアし、ロックは削除しません。 また、このオプションはシェアードメモリパーティションを削除しないことに注意してください。 単にデータを空にするだけです。(tabzeroのシェアードメモリ定義を削除するだけです。)
保護されたパーティションはこのコマンドによってクリアされないことにも注意してください。 つまり、MSSHMPROTECTIONが設定されている場合、パーティション記述ブロックは クリアされません。
"shminfo"オプションは、 データ辞書 tabzeroファイル中のシェアードメモリパーティション定義ブロック に関係したシェアードメモリパーティションについての情報を表示します。
empadm database_name shminfo
以下はrepairsデータベースのサンプル出力です。
Database: repairs Partition name Size Type mapf1 22592 Mapped File gbuf1 161200 Global Buffers lock1 4784 Lock Manager Mapped File Partition Partition name SIZE START mapf1 22528 0 Statistics Read hit ratio: 100% Read ratio: 83% Global Buffers Partition Partition name BLOCKSIZE NBLOCKS gbuf1 1024 150 Lock Manager Partitions Partition name : lock1 MAXPROCS NBUCKETS NLOCKS 32 11 200
レポートの最初のセクションは、このデータベースのシェアードメモリパーティション のリストで、各パーティションのサイズおよびタイプを表示します。 このデータベースでは、 mapf1と名づけられたマップファイルパーティション、 gbuf1と名づけられたグローバルバッファパーティション、 lock1と名づけられたロックマネージャパーティション の3つのパーティションを持っています。
次の出力は各シェアードメモリパーティションについての情報を表示します。 マップファイルパーティションでは、サイズおよび開始オフセットが表示され、 またいくつかの基本統計情報が表示されます。
Read hit ratioフィールドは、 ディスクからではなくマップファイルパーティションからの情報を取得し、 マップファイルへのアクセスのパーセンテージを表示します。 このパーセンテージが低い場合、マップファイルパーティションのサイズを増加するか あるいは、マップファイルの開始オフセットを変更することを考慮する必要があります。
Read ratioフィールドは、 読み込みと書き込み操作の合計中の 読み込み操作が行われたパーセンテージを表示します。 ほとんどの操作においてファイルへの書き込みが行われた場合は このパーセンテージは低くなります。
Read hit ratioとRead ratioは、シェアードメモリの 最適なパフォーマンスを得るために(値を)高くする必要があることに注意してください。
グローバルバッファパーティションは、 パーティションのブロックサイズおよびブロック数が表示されます。
ロックマネージャパーティションのレポートは同時にロックマネージャにアクセスが 可能な最大プロセス数、およびロックマネージャのバケット数、 またこのロックマネージャによって管理できる最大同時ロック数を表示します。
"shmstats" オプションは、シェアードメモリの利用についての 詳細な統計情報を提供します。
empadm database_name shmstats
"lockrststats"オプションは、シェアードメモリー統計情報の累計を リセットするために用います。
empadm database_name shmrststatsこのコマンドの実行した後に、すべてのシェアードメモリファイルとグローバルバッファの 統計情報は、 "0"にリセットせれ、再び情報の蓄積を始めます。
以下は"shmstats"オプションのサンプル出力です。
Database: repairs Partition name Size Type mapf1 22592 Mapped File gbuf1 161200 Global Buffers lock1 4784 Lock Manager Mapped File Partition Partition name SIZE START mapf1 22528 0 Statistics Bytes used: 3072 Reads: 5 Read-nexts: 0 Writes: 1 Write-nexts: 1 Global Buffers Partition Partition name BLOCKSIZE NBLOCKS gbuf1 1024 150 Statistics File name DIN DOUT PIN POUT cdinator 4 14 14 35 0001.rel 2 0 0 21 00010004.dtf 9 0 0 23 00010001.ix 3 0 0 24 0006.rel 2 0 0 5 0007.rel 2 0 0 6 Lock Manager Partition Partition name : lock1 MAXPROCS NBUCKETS NLOCKS 32 11 200 NPROCS MAXNPROCS CURNLKS MAXNLKS EFFICIENCY 0 0 0 0 - # buckets % of hits - - # hits # buckets bucket # 0 11 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 Max. chain length # buckets bucket # 0 11 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
"shminfo"のレポートとして、 最初のセクションは、データベースのシェアードメモリパーティションのリストと 各パーティションのサイズとタイプを表示します。
マップファイルパーティションのレポートの最初のフィールドは、 実際に使用しているマップファイルのバイト数を示しています。 Readsフィールドは、 シェアードメモリパーティション中から 情報を検索することができた 読み込み操作の回数を示しています。 Read-nextsフィールドは、ディスクから情報を 検索しなければならなかった読み込み操作の回数を含みます。 シェアードメモリ上にファイルの全部をマップした場合は この数字は常に "0" になります。 ファイルの一部分だけをマップした場合、この数字は ファイルのマップしていない部分がどのように頻繁に利用されたか を反映します。
Writesフィールドは、マップファイルバッファへのデータ書き込み 操作の回数を示します。 Write-nextsフィールドはディスクへのデータ書き込み操作の回数を 示します。 Write-nextsは、 Empressが、ライトスルーキャッシュを使う場合は、 通常Writesと同じ値になります。 MSPARTMAPFNOWRITETHROUGH変数がセットされた場合、 Write-nextsの値は予測ができず、 キャッシュがファイルに書き出されたかどうかを反映します。
グローバルバッファ・パーティションは、各ファイルの統計情報が表示されます。 DIN とDOUTフィールドは、それぞれ ディスクからバッファへ、またバッファからディスクへと データ転送を要求した操作がどのくらいの数かを示します。 PIN と POUTは、それぞれ プロセスからバッファへ、またバッファからプロセスへの データ転送の同様な統計情報をレポートします。
PIN、POUT、DIN 、DOUT およびグローバルバッファ間の関係は以下のように見えます。
図 9-1: PIN、POUT、DIN 、DOUT およびグローバルバッファ間の関係
ロックマネージャ・パーティションのレポートのフォーマットは、 empadm database_name lockstatsによって出力した内容と同じです。
"params"オプションは、 指定されたシェアードメモリパーティションへ データベースファイルをマップします。
empadm database_name params params_file table_name [table_name ...]
パラメータファイル(params_file)は、 empshm paramsコマンドによって作成されます。 "params"オプションは、 Empressは、テーブルをロックし、アクセスする際に シェアードメモリパーティションを利用するために テーブルへのパラメータファイルを適用します。
1 つのパラメータファイルは、 テーブル名のリストが指定された場合において シェアードメモリへのいくつかのテーブルを マップするために利用することができます。 1度実行することで、 テーブルへのすべてのアクセスは、パラメータファイルによって指定された 自動的にシェアードメモリへ経由されます。 対話型 SQL インターフェイス内の DISPLAY table ALLコマンドは、 シェアードメモリへのマッピングの場所を表示します。
シェアードメモリからテーブルをアンマップする場合は、 そのテーブルに空のファイルをマップする必要があります。 例えば
empadm repairs params /dev/null loans personnel
loansテーブルとpersonnelテーブルをシェアードメモリから アンマップします。
"coordinfo"オプションは、 コーディネイターについての情報を提供します。
empadm database_name coordinfo
レポートは、 作成されているコーディネータがどのような構成であるか、あるいは 現在のオンライン・バックアップの状態、 リカバリーログバージョン番号、 コーディネータに登録されたプロセスの 詳細なプロセス情報ブロックのリストを含んでいます。
以下はデータベース"movies"のサンプル出力です。
Database: movies Header Max clients Number of clients 1024 1 On-line Backup Status Recovery Log Inactive Recovery Log Version Number = 0 Process Information Blocks User Name Client ID Proc ID Machine ID Status smith 490243111 24669* 127.0.0.1 Inactive
出力の最初のセクションは 最大1024プロセスが、同時にコーディネイターにアクセス可能であり、 また、現在、1プロセスがデータベースにアクセスしていることを 示しています。
次のセクションでは、 誰かがオンラインバックを実行中であり、 そのリカバリーログのバージョンが "0" であることを示しています。
最後のセクションでは、現在、コーディネータにアクセス中のそれぞれのプロセスの情報の リストを表示します。 User Nameフィールドはカレントプロセスの所有者である オペレーティングシステムのユーザー名を示しています。 Client IDフィールドは、 カレントプロセスのEmpress ID を示しています。 Proc IDフィールドはこのプロセスのオペレーティングシステムのプロセス IDを 示しています。 Machine IDフィールドは、そのプロセスが実行しているマシンの ネットワークアドレスを示しています。 最後にStatusフィールドは、カレントプロセスのコーディネータでの状態 (コーディネータ・ステイタス)を示しています。
"coordclear"オプションは、 指定されたEmpressプロセスIDに関連したクライアントを コーディネイター情報から削除します。
empadm database_name coordclear [-f] [empress_id ...]
"-f"なしで指定された場合の "coordclear"は、 アクティブではないクライアントプロセス(defunctしたプロセス) のみを削除します。 クライアントプロセスID(empress_id)が、 指定されない場合、すべての非アクティブクライアント情報は、 コーディネイターから削除されます。
"-f"(強制削除)オプションが使われた場合、
すべてのクライアント情報はコーディネイターから削除されます。
データベース整合保証チェックユーティリティ(empclean)を実行しているときに
クライアント情報がコーディネイターからクリアされた場合、
"empclean"は、クライアントは存在しないと仮定して、
クライアントプロセスを削除します。
このオプションを使う場合、注意が必要です。
この途中終了した(defunct)empress_idのリストは empadm database_name coordinfo コマンドにより 表示することができます。
処理速度を向上するために、 Empressはテーブルについての すべての情報をコンパイルし、 そのデータをデータ辞書中に格納します。 "recompile_all" と "recompile" オプションは、 データ辞書エントリの再コンパイルを強制的に行うために使うことができます。
empadm database_name recompile_all empadm database_name recompile [table ...]
"recompile_all"オプションは、 データベース内のすべてのテーブルのデータ辞書情報を再コンパイルします。 実行するとコンパイルされたそれぞれのテーブル名が表示されます。
"recompile"オプションは、 データ辞書を除く コンパイルされたテーブルのエントリ のデータ辞書情報を再コンパイルします。 テーブルのリストが指定された場合、指定されたテーブルのエントリのみを 再コンパイルします。
"dblocation"オプションは、論理データベースの 物理的な位置(パス)を表示します。
empadm database_name dblocation
データベースがサーバーを通してアクセスされる場合、 "dblocation"は、またサーバーが実行されている ホスト名を表示します。
以下にユーザーのホームディレクトリの下にある "repairs"データベースを例に挙げます。 ホームディレクトリの物理パス名は"/home/staff/joe"であり、 論理名を"repairs_db"とする場合、
empadm repairs_db dblocation
以下を出力します。
/home/staff/joe/repairs
"repairs"データベースが ホスト名"gold"のマシン上にあるとした場合、 上記のコマンドの出力は次のとおりです。
gold:/home/staff/joe/repairs
"maxprocs"オプションは、データベースの最大同時プロセス数を 変更するために使用されます。 このコマンドの構文は以下のとおりです。
empadm database_name maxprocs | |licence |license |[N] |keep |
| [-f] | | | |
"licence" または "license"が指定された場合、 データベースの最大同時プロセス数はライセンスキーで許可された値 が設定されます。
empadm database_name maxprocsが、 N数の指定なしに使用された場合、 データベースの最大同時プロセス数は以下の値の最小値が設定されます。
N数が指定され、Nがライセンスキーで許可された プロセス数と同じかそれより小さい場合は、 データベースの最大同時プロセス数は、Nを設定します。 それ以外の値の場合はempadmは、エラーメッセージを出力し、終了します。
プロセス制限が変更した時は必ず、 データ辞書ファイル "tabzero"ファイル中のMSDBMAXPROCSの値もまた 現在の値に反映するために変更されます。 "keep"オプションは、 データ辞書tabzeroファイル中のMSDBMAXPROCSの値として データベースの最大同時プロセス数で再設定します。
"maxprocs"コマンドが実行された場合、 データベースへの最大同時プロセス数の設定後、 合わせて以下の箇所に影響があります。
より大きなMSDBMAXPROCSの値は、 コーディネータファイルとロックファイルの最大の値となります。 これは、MSDBMAXPROCSのより小さな値との比較おいて パフォーマンスに影響します。 同時ユーザーアクセスが少ないデータベースにおいては より小さいプロセス制限の設定により、パフォーマンスを 向上します。
empadm database_name maxprocs コマンドは、 アクティブなプロセスが存在しないときにのみ実行することができます。 empadmが、アクティブなプロセスの存在を検出した場合は、 エラーメッセージを出力し、終了します。 "-f"オプション(強制実行)が指定された場合、 empadmは、警告メッセージを出力し、変更する処理を続けます。 このオプションを使用する場合は注意してください。
empadmユーティリティの "-help" オプションは、 有効なすべてのオプションを表示します。 以下に実行例を示します。
empadm -help
*** Usage *** empadm [オプション] DATABASE コマンド オプション: -help コマンド記述を表示する コマンドは以下より1つを指定: coordinfo コーディネータ情報を表示 coordclear [-f] [EID ...] コーディネータを削除、EID は Empress ID dbamode [on] [-i N|-q] DATABASE へのアクセスを DBA だけに制限 dbamode off DATABASE への DBA だけのアクセス制限を解除 dblocation データベースの物理位置を表示 lockbrief [TBL ...] ブリーフロック情報を表示 lockclear [-f] [EID ...] ロックを削除、EID は Empress ID lockinfo [TBL ...] ロック情報を表示 lockmanagers [TBL ...] ロックマネージャ情報を表示 lockremove ロックとロックファイルを削除 lockrststats ロック統計のリセット locksactive [TBL ...] アクテイブロックの簡略表示 lockstats [TBL ...] ロック情報の詳細表示 maxprocs [-f] データベースの最大プロセス数を省略値にセット maxprocs licence [-f] データベースの最大プロセス数をセット maxprocs license [-f] データベースの最大プロセス数をセット maxprocs N [-f] データベースの最大プロセス数を N にセット maxprocs keep [-f] 現在の最大値を使用しコーディネータを再作成 params FILE TBL ... パラメータファイル FILE を使用してデータベース ファイルを共有メモリにマップする recompile [TBL ...] システムテーブル内の TBL レコードを再構築 recompile_all システムテーブル内の全レコードを再構築 shmclear データベースに対する共有メモリを消去 shmcreate DATABESE の共有メモリセグメントを作成 shminfo 共有メモリ情報を表示 shmrefresh DATABASE の共有メモリセグメントを再作成 shmremove DATABASE の共有メモリセグメントを削除 shmrmall DATABASE の全共有メモリセグメントを削除 shmrststats DATABASE の共有メモリ統計をリセット shmstats DATABASE の共有メモリ統計を表示 shmzap 共有メモリのセグメントと設定を削除 singlemode [-i N | -q] ["shell_command"] シングルユーザモードでの DATABASE に対するアクセス を許可する vsize TBL ... [-NNN] このコマンドは、V8.60 からサポートされません。 'alter' コマンドで add/drop checksum を行ってください vsize_all [-NNN] このコマンドは、V8.60 からサポートされません。