スケーラブルデータベースサーバ HiRDB Version 8 コマンドリファレンス(UNIX(R)用)

[目次][索引][前へ][次へ]

pdmemdbインメモリデータ処理に関するコマンド)

機能

pdmemdbコマンドで次に示すことができます。

なお,pdmemdbコマンドの実行結果は,pddbls -Mコマンドで確認できます。

実行者

HiRDB管理者が実行できます。

形式

 
 pdmemdb -k 処理種別 {-r RDエリア名〔,RDエリア名〕…|-r ALL}
            〔-p ページ指定種別〕〔-d〕
 

オプション

pdmemdbコマンドで実行する処理を指定します。

stay:
-rオプションで指定したRDエリアをインメモリ化する場合に指定します。

rels:
-rオプションで指定したインメモリRDエリアのインメモリ化を解除します。

reload:
-rオプションで指定したインメモリRDエリア内のデータをインメモリデータバッファに再読み込みします。

cancel:
-rオプションで指定したインメモリRDエリアに割り当てられているインメモリデータバッファ上の更新情報を破棄します。

各オプションの指定によって,pdmemdbコマンド実行後のインメモリデータバッファ及びRDエリアの状態が異なります。詳細については,「表2-11 pdmemdbコマンド実行時の前提条件(インメモリデータバッファと対象RDエリアの状態)」を参照してください。

処理対象のRDエリアの名称を指定します。

次に示すRDエリアを指定した場合,pdmemdbコマンドがエラーになります。

<規則>
RDエリアを指定する場合の規則については,「1.5.2 運用コマンド,ユティリティでのRDエリアの指定」を参照してください。

このオプションを指定した場合,-kオプションで指定した処理を実行できるすべてのRDエリアを処理対象にします。

全インメモリRDエリアのインメモリ化を一度に解除するときなどに,このオプションを指定します。

なお,RDエリアをインメモリ化するときにこのオプションを指定すると,必要のないRDエリアをインメモリ化するおそれがあるため,インメモリ化するときはこのオプションを指定しないことをお勧めします。

注意
監査証跡表又は改竄防止表がある場合,-r ALL指定をしないでください。-r ALL指定をすると,監査証跡表又は改竄防止表を格納しているRDエリアもインメモリ化されます。監査証跡表又は改竄防止表を格納しているRDエリアをインメモリ化してはいけない理由については,注意事項を参照してください。

次に示すRDエリアは,-r ALL指定時に処理対象となりません。

このオプションは-kオプションにstayを指定した場合に指定できます。

インメモリデータバッファが使用する共用メモリを実メモリ上にページ固定するかどうかを指定します。

free:
インメモリデータバッファが使用する共用メモリを実メモリ上にページ固定しません。

fixed:
インメモリデータバッファが使用する共用メモリを実メモリ上にページ固定します。

インメモリデータバッファが使用する共用メモリを実メモリ上にページ固定(fixed指定)すると,共用メモリのページングを防止できるため,共用メモリに対するアクセス性能が向上します。

インメモリデータバッファが使用する共用メモリサイズとサーバマシンの実メモリから,メモリを固定するかどうかを決定してください。実メモリに比べて大きなメモリをページ固定すると,ページングの多発や仮想メモリ不足の原因になります。したがって,実メモリや全仮想メモリに対する共用メモリプールの占める割合を検討する必要があります。インメモリデータバッファが使用する共用メモリの計算式については,マニュアル「HiRDB Version 8 システム導入・設計ガイド」を参照してください。

ページ固定は,実メモリサイズからページ固定する共用メモリサイズを減算したサイズが,スワップ領域サイズからページ固定する共用メモリサイズを減算したサイズの1/2以上にならないことを目安にしてください。

AIX版でfixedを指定する場合の注意事項を次に示します。

共用メモリがメモリ上に固定されているかどうかは,AIXのコマンドで確認できます。詳細については,AIXのマニュアルを参照してください。

このオプションは-kオプションにrelsを指定した場合に指定できます。

インメモリ化を強制解除する場合にこのオプションを指定します。インメモリ化を強制解除すると,インメモリデータバッファ上の更新データはインメモリRDエリアに反映されません。

 

注意
pdmemdbコマンドを実行する前に,インメモリデータバッファと対象RDエリアの状態を確認してください。正しい状態になっていないとpdmemdbコマンドを実行できません。pdmemdbコマンド実行時の前提条件(インメモリデータバッファと対象RDエリアの状態)を次の表に示します。
 

表2-11 pdmemdbコマンド実行時の前提条件(インメモリデータバッファと対象RDエリアの状態)

pdmemdbコマンドの-kオプションの指定 コマンド実行時の前提条件 コマンド実行後の状態
インメモリデータバッファの状態 RDエリアの状態 インメモリデータバッファの状態 RDエリアの状態
stay 未使用状態 コマンド閉塞かつクローズ状態 DB同期状態 コマンド閉塞かつクローズ状態
reload バッファ障害状態 障害閉塞かつクローズ状態
rels -dオプション指定なし DB同期状態 コマンド閉塞かつクローズ状態 未使用状態(インメモリ化の解除) コマンド閉塞かつクローズ状態
-dオプション指定あり DB非同期状態 コマンド閉塞かつオープン状態 障害閉塞かつクローズ状態
バッファ障害状態 障害閉塞かつクローズ状態
RDエリア障害状態 コマンド閉塞かつオープン状態
バッファ障害状態かつRDエリア障害状態 障害閉塞かつクローズ状態
cancel DB非同期状態 コマンド閉塞かつオープン状態 バッファ障害状態 障害閉塞かつオープン状態

注※
オンライン再編成閉塞中からコマンド閉塞かつクローズ状態に遷移した場合は,pdmemdb -k stayコマンドを実行できません。

リターンコード

pdmemdbコマンドのリターンコードを次に示します。

規則

  1. HiRDBが稼働中のときにpdmemdbコマンドを実行できます。
  2. HiRDB/パラレルサーバの場合,システムマネジャを定義したサーバマシンでpdmemdbコマンドを実行してください。
  3. データディクショナリ用RDエリアが次に示すどちらかの状態のときに,pdmemdbコマンドを実行できます。
    • オープン状態,かつ閉塞解除状態
    • オープン状態,かつコマンド閉塞状態
  4. pdmemdbコマンドは,HiRDB Acceleratorが正しくセットアップされていて,かつpd_max_resident_rdarea_noオペランドに1以上が指定されている場合に実行できます。

注意事項

  1. RDエリアの容量に比例してpdmemdbコマンドの処理時間が長くなります。その間,シンクポイントが有効化されないため,注意してください。
  2. -kオプションにstay,reload,relsのどれかを指定してコマンドを実行したときにコマンドプロセスをkillすると,HiRDB(HiRDB/パラレルサーバの場合はユニット)が異常終了することがあるため,コマンドプロセスをkillしないでください。
  3. インメモリRDエリアがある場合にHiRDBが強制終了又は異常終了すると,インメモリデータバッファ上の更新情報はインメモリRDエリアに反映されません。このとき,インメモリRDエリアが障害閉塞することがあります。
    • ユーザ用RDエリア,及びユーザLOB用RDエリアの場合
      DB同期状態以外のときは,ユーザ用RDエリア,及びユーザLOB用RDエリアが障害閉塞します。
    • リスト用RDエリアの場合
      RDエリア障害状態又は両系障害状態(バッファ障害状態かつRDエリア障害状態)のときは,リスト用RDエリアが障害閉塞します。
    このため,インメモリ化を行った場合は,必ずバックアップを取得してください。バックアップは,次の場合に必要となります。
    • 両系障害状態(バッファ障害状態かつRDエリア障害状態)となった場合
    • 最新の状態に回復する場合
    • 関連するRDエリアをインメモリ化していない場合(インメモリRDエリアに対して定義系SQLを実行する場合を含む)
    バックアップ取得の運用については,マニュアル「HiRDB Version 8 バッチ高速化機能」を参照してください。
  4. インメモリRDエリアがあるディスクのペアボリューム操作を行わないことをお勧めします。インメモリデータバッファとインメモリRDエリアの同期状態(DB同期状態なのかDB非同期状態なのか)を正しく認識しないでペアボリューム操作を行うと,データの不整合が発生するおそれがあります。
  5. インメモリ化の処理中(pdmemdbコマンドの実行からインメモリ化を完了するまでの間)は,pdstop,pdchgconf,又はpdprgrenewコマンドを実行しないでください。実行して両方のコマンドが正常終了した場合,インメモリデータバッファを割り当てた共用メモリセグメントが解放されない可能性があります。この場合は,OSの機能を使って共用メモリセグメントの使用状況を調べて,必要に応じて共用メモリセグメントの解放を行ってください。
  6. HiRDBが強制終了又は異常終了すると,インメモリデータバッファ上の更新情報がインメモリRDエリアに反映されません。このため,監査証跡表又は改竄防止表を格納しているRDエリアをインメモリRDエリアにしないでください。
    監査証跡表又は改竄防止表も,ほかの表と同様にデータベース回復ユティリティを使用すれば,更新情報を反映してインメモリRDエリアを最新の状態に回復できますが,セキュリティ上の観点から,インメモリデータ処理の適用はお勧めしません。
    また,監査証跡表の自動データロード機能は更新前ログ取得モードで動作するため,自動データロード機能を使用している場合は,監査証跡表に更新情報を反映できなくなるおそれがあります。
  7. pdmemdbコマンドは,指定したRDエリアに対してEXモードで排他制御をします。そのため,指定したRDエリアにほかのトランザクションがアクセス中の場合は,そのトランザクションの終了までpdmemdbコマンドは待ち状態になります。
  8. -rオプションで複数のRDエリアを指定した場合(複数のRDエリアに対して一度に処理を行う場合),一部のRDエリアに対する処理でエラーが発生すると,すべてのRDエリアの処理を無効化します。
    なお,HiRDB/パラレルサーバの場合は,バックエンドサーバごとにこの仕組みが適用されます。HiRDB/パラレルサーバのときの例を次に示します。
    (例)
    pdmemdb -k stay -r RD01,RD02,RD03,RD04
    RD01とRD02はバックエンドサーバ1で,RD03とRD04はバックエンドサーバ2で管理されています。RD02のインメモリ化に失敗した場合,RD01もインメモリ化されません。RD03とRD04はインメモリ化されます。
    なお,このとき,pdmemdbコマンドのリターンコードに4が返されます。
    参考
    この規則は,一括指定の場合や,ALL指定の場合も適用されます。
    直接指定及び一括指定の場合と,ALL指定の場合の,エラー処理の差異を次に示します。
    pdmemdbコマンド実行時の条件又はエラー発生時の条件 直接指定及び一括指定の場合 ALL指定の場合
    指定したRDエリアに,共用RDエリアなどのインメモリデータ処理の適用外となるRDエリアがある場合 pdmemdbコマンドがエラーになります。指定したRDエリアは一つもインメモリ化されません。 インメモリデータ処理の適用外となるRDエリアはインメモリ化されません。残りのRDエリアはすべてインメモリ化されます。
    指定したRDエリアのうち,共用メモリ不足などで一部のRDエリアに対する処理でエラーが発生した場合 注意事項8で説明した処理が行われます。