Hitachi

ノンストップデータベース HiRDB Version 9 コマンドリファレンス(Windows(R)用)


11.3.2 オプション

〈この項の構成〉

(1) -k 対象資源

使用中空きページ解放の処理対象とする資源(表又はインデクス)を指定します。

table:

処理対象が表の場合に指定します。

index:

処理対象がインデクスの場合に指定します。

(2) -t {〔認可識別子.〕表識別子|〔認可識別子.〕all}

   〜<識別子>

使用中空きページ解放の対象となる表名を指定します。

認可識別子を省略した場合,HiRDBに接続したときのユーザの名称が仮定されます。

allを指定した場合,認可識別子をスキーマ名とした,該当スキーマが持つすべての表,又はインデクスを処理対象とします。この場合,idxname文は指定できません。

(3) -r RDエリア名

   〜<識別子>

-tオプションに指定した表を格納するRDエリアのうち,ある特定のRDエリアだけを処理対象としたい場合,そのRDエリア名を指定します。

このオプションは,-k tableの場合に指定できます。-k indexの場合は,idxname文で指定します。

RDエリア名には,ユーザ用RDエリアだけ指定できます。また,一括指定は指定できません。

(4) -c 処理対象

   〜《user》

処理対象(ユーザ用RDエリア,又はデータディクショナリ用RDエリア)を指定します。

user:

ユーザ用RDエリアを処理対象とします。

dic:

データディクショナリ用RDエリアを処理対象とします。

(5) -m 〔空きページ解放のコミット間隔〕〔,空きセグメント解放のコミット間隔〕

空きページ解放,又は空きセグメント解放のコミット間隔を指定します。

空きページ解放のコミット間隔 〜<符号なし整数>((0〜100000))《1000》

使用中空きページ解放処理のトランザクション決着間隔を,解放したページ数で指定します。表又はインデクスの1RDエリア単位での解放ページ数が指定値以上になると,トランザクションを決着します。解放したページ数には,ページコンパクションだけ実行され,使用中空きページにできなかったページも含まれます。

0を指定した場合,該当するRDエリアにあるすべての使用中空きページ解放が完了してから,トランザクションを決着します。

指定値を大きくすると,トランザクションログ量を削減できます。しかし,その反面,pdreclaimが長時間トランザクションとなり,シンクポイント有効化のタイミングがなくなります。また,同時に-pオプションを指定する場合,シンクポイントダンプ取得前にトランザクション決着できるようにコミット間隔を指定する必要があります。-pオプション指定時のコミット間隔の目安は,pdreclaimがアクセスするグローバルバッファのシンクポイント出力ページ数の総和の50%以下としてください。シンクポイント出力ページ数は「グローバルバッファプールに関する統計情報」のCYNCWで確認できます。

空きセグメント解放のコミット間隔 〜<符号なし整数>((0〜10000000))《0》

空きセグメント解放のコミット間隔の指定は,同時に-aオプションを指定しているときだけ有効となります。

使用中空きセグメント解放処理のトランザクション決着間隔を,解放したセグメント数で指定します。表又はインデクスの1RDエリア単位での解放セグメント数が指定値以上になると,トランザクションを決着します。

0を指定した場合,該当するRDエリアにあるすべての使用中空きセグメント解放が完了してから,トランザクションを決着します。

指定値を大きくすると,トランザクションログ量を削減できます。しかし,その反面,pdreclaimが長時間トランザクションとなり,シンクポイント有効化のタイミングがなくなります。また,同時に-pオプションを指定する場合,シンクポイントダンプ取得前にトランザクション決着できるようにコミット間隔を指定する必要があります。-pオプション指定時のコミット間隔の目安は,「pdreclaimがアクセスするグローバルバッファのシンクポイント出力ページ数の総和÷2×60」以下としてください。シンクポイント出力ページ数は「グローバルバッファプールに関する統計情報」のCYNCWで確認できます。

(6) -u 認可識別子

pdreclaimを実行するユーザの認可識別子を指定します。

認可識別子については,「-u 認可識別子」を参照してください。

(7) -w 同時実行トランザクション決着待ち時間

   〜<符号なし整数>((0〜3600))《0》

空きページ解放又は空きセグメント解放をする表やインデクスは,UAPやユティリティから同時にアクセスされると,pdreclaimは排他解除待ち,又はトランザクション決着待ちとなります。-wオプションには,このpdreclaimの待ち時間を秒単位で指定します。

なお,pdreclaimは次の場合に待ち状態になります。

排他解除待ち:

次のどちらかのときに排他解除待ちになります。

  • 同じRDエリアを参照又は更新するUAPやユティリティが実行中のとき

  • RDエリア単位のデータロードや,ローカルバッファを使用したUAPが実行中のとき

トランザクション決着待ち:

次のどちらかのときにトランザクション決着待ちになります。

  • 空きページ解放するインデクス,及びそのインデクスが定義されている表に対して,次の操作がトランザクション決着待ちのとき

    ・SQL文(SELECT文,UPDATE文,INSERT文,及びDELETE文)

    ・pdrorgのアンロード

    ・pddbst(表単位の状態解析,インデクス単位の状態解析,クラスタキー及びクラスタリングデータページの格納状態解析,状態解析結果蓄積機能,及び再編成時期予測機能)

  • 空きセグメント解放する表又はインデクスに対して,次の操作がトランザクション決着待ちのとき

    ・SQL文(SELECT文,UPDATE文,INSERT文,及びDELETE文)

    ・pdrorgのアンロード

    ・pdpgbfon

    ・pddbst(表単位の状態解析,インデクス単位の状態解析,クラスタキー及びクラスタリングデータページの格納状態解析,状態解析結果蓄積機能,及び再編成時期予測機能)

ホールダブルカーソルを使用した検索の実行待ち:

空きセグメント解放する表又はインデクスに対して,ホールダブルカーソルを使用して検索するUAPがある場合,ホールダブルカーソルを使用した検索の実行待ちとなります(ホールダブルカーソルを使用した検索が,カーソルをクローズしてトランザクションを決着するまで待ちます)。なお,pdreclaim実行中にホールダブルカーソルをクローズしても,同一UAPで同じ表又は同じインデクスに対して再度ホールダブルカーソルをオープンすれば,そのカーソルのクローズ,及びトランザクションの決着を待ちます。

-wオプション指定の有無とpdreclaimの待ち時間の関係を次の表に示します。

表11‒8 -wオプション指定の有無とpdreclaimの待ち時間の関係

処理

-wオプションの指定

排他解除待ちの時間

トランザクション決着待ちの時間

ホールダブルカーソルを使用した検索の実行待ちの時間

表の空きページ解放

あり

-wオプション指定値だけ待つ

なし

排他待ち状態が解除されるまで待つ

インデクスの空きページ解放

あり

-wオプション指定値だけ待つ

-wオプション指定値だけ待つ

なし

排他待ち状態が解除されるまで待つ

他トランザクションが決着するまで待つ

表の空きセグメント解放(-j)

あり

-wオプション指定値だけ待つ

なし

排他待ち状態が解除されるまで待つ

インデクスの空きセグメント解放(-j)

あり

-wオプション指定値だけ待つ

なし

排他待ち状態が解除されるまで待つ

表の空きページ解放,表の空きセグメント解放(-a)

あり

-wオプション指定値だけ待つ

-wオプション指定値だけ待つ

-wオプション指定値だけ待つ

なし

排他待ち状態が解除されるまで待つ

他トランザクションが決着するまで待つ※1

ホールダブルカーソルを使用した検索のカーソルがクローズしてトランザクションを決着するまで待つ※2

インデクスの空きページ解放,インデクスの空きセグメント解放(-a)

あり

-wオプション指定値だけ待つ

-wオプション指定値だけ待つ

-wオプション指定値だけ待つ

なし

排他待ち状態が解除されるまで待つ

他トランザクションが決着するまで待つ※1

ホールダブルカーソルを使用した検索のカーソルがクローズしてトランザクションを決着するまで待つ※2

(凡例)

−:該当しません。

注※1

トランザクションが決着する契機を次に示します。

  • COMMIT

  • ROLLBACK

  • 内部ROLLBACK

空きページ解放の場合,UNTIL DISCONNECT指定で検索していて,かつCOMMITの操作をしたときは,次のどちらかの操作も必要となります。

  • カーソルをクローズしてからCOMMIT

  • 次のデータをFETCH

注※2

ホールダブルカーソルを使用した検索の実行待ちが決着する契機を次に示します。

  • ROLLBACK

  • 内部ROLLBACK

  • カーソルをクローズしてからCOMMIT

<規則>

pdreclaimが待ち状態になってから,指定時間以内にUAP側のトランザクションが決着しない場合,及びホールダブルカーソルを使用した検索がカーソルをクローズしてトランザクションを決着しない場合,pdreclaimはリターンコード4で処理を打ち切ります。また,排他解除待ち状態が解除されない場合,pdreclaimはリターンコード8で処理を打ち切ります。

<pdreclaimの排他解除待ち>

pdreclaimの排他解除待ちは,-aオプションの指定有無によって変わります。

  • -aオプションなしの場合

    pdreclaimの排他制御の流れ(-aオプションなし)を次の図に示します。

    図11‒7 pdreclaimの排他制御の流れ(-aオプションなし)

    [図データ]

注※1

表の空きページ解放の場合は表格納用RDエリア,インデクスの空きページ解放の場合はインデクス格納用RDエリアが対象となります。

注※2

空きページ解放の排他対象資源,排他モードについては,「ユティリティの排他制御モード」を参照してください。

注※3

-wオプションで指定した待ち時間を超える場合は,KFPA11770-Iメッセージを出力してpdreclaimの処理を打ち切ります。

注※4

-wオプションで指定した待ち時間を超える場合は,KFPL27500-E,及びKFPH25002-Eメッセージを出力してRDエリアの処理を打ち切り,次のRDエリアの処理をします。処理を打ち切るときには,KFPH25004-Iメッセージを出力してすべての待ち対象のトランザクション情報を表示します。

注※5

インデクスの空きページ解放のときだけ該当します。

注※6

pdreclaimが排他を掛ける区間です。

注※7

待ち時間が10分を経過した場合,KFPH25004-Iメッセージを出力してすべての待ち対象のトランザクション情報を表示します。トランザクションの決着待ち要因ごとにトランザクション情報を出力するため,KFPH25004-Iメッセージが複数回出力されることがあります。

  • -aオプションありの場合

    pdreclaimの排他制御の流れ(-aオプションあり)を次の図に示します。

    図11‒8 pdreclaimの排他制御の流れ(-aオプションあり)

    [図データ]

注※1

表の空きページ解放の場合は表格納用RDエリア,インデクスの空きページ解放の場合はインデクス格納用RDエリアが対象となります。

注※2

空きページ解放の排他対象資源,排他モードについては,「ユティリティの排他制御モード」を参照してください。

注※3

-wオプションで指定した待ち時間を超える場合は,KFPA11770-Iメッセージを出力してpdreclaimの処理を打ち切ります。

注※4

-wオプションで指定した待ち時間を超える場合は,KFPL27500-E,及びKFPH25002-Eメッセージを出力してRDエリアの処理を打ち切り,次のRDエリアの処理をします。処理を打ち切るときには,KFPH25004-Iメッセージを出力してすべての待ち対象のトランザクション情報を表示します。

注※5

インデクスの空きページ解放のときだけ該当します。

注※6

pdreclaimが排他を掛ける区間です。

注※7

待ち時間が10分を経過した場合,KFPH25004-Iメッセージを出力してすべての待ち対象のトランザクション情報を表示します。トランザクションの決着待ち要因ごとにトランザクション情報を出力するため,KFPH25004-Iメッセージが複数回出力されることがあります。

<KFPH25004-Iメッセージの対処方法>
  • -wオプションに1以上を指定した場合

    タイムアウトが発生したときに待ち対象となっているトランザクションが出力されます。メッセージに出力されたトランザクションがすべて完了した後でpdreclaimを再実行してください。トランザクションが完了しているかどうかは,次の図を参照して確認してください。

  • -wオプションに0を指定又は省略した場合

    待ち対象になっているトランザクションが出力されます。次の図を参照して待ち対象になっているトランザクションを特定し,不要なトランザクションが残っている場合は終了させてください。そうでない場合は,トランザクションが終了するまで待ってください。なお,トランザクションが待ち状態になる要因は複数あるため,最初のメッセージに出力されたトランザクションがすべて終了した後で,更に別のトランザクションが出力されることがあります。トランザクションが終了する前にpdreclaimを終了させたい場合は,pdreclaimをキャンセルしてください。

    図11‒9 KFPH25004-Iメッセージの対処方法

    [図データ]

(8) -X サーバ間通信の応答監視時間

   〜<符号なし整数> ((1〜65535)) 《300》

コマンドを実行したサーバで通信障害などの障害が発生した場合,コマンドは無応答となり,業務が停止するおそれがあります。pdreclaimでは障害を検知するために,コマンドで実施されるディクショナリ操作についての通信の応答時間を監視できます。

-Xオプションには,ディクショナリ操作での応答監視時間を秒数で設定します。ディクショナリ操作時の実行時間が,-Xオプションに設定した時間を超えた場合は,pdreclaimはディクショナリアクセスで障害が発生したと判断し,リターンコード8で処理を打ち切ります。

<適用基準>
  • 通信障害やユニットダウンによってサーバから応答が返らない状態となった場合に,300秒より早く障害を検知したいとき,-Xオプションに300より小さい値を指定してください。

  • 系切り替え機能を使用している場合,系切り替えが完了しているにもかかわらず,コマンドが応答を待ち続けることがあります。その場合は,監視時間を短く設定することで,コマンドを即時終了できます。

  • 同時実行するアプリケーションやユティリティの多重度が高い場合など,ディクショナリからの応答が遅延し,-Xオプションのデフォルトである300秒以内にユティリティの前処理が完了しないときは,監視時間でタイムアウトするおそれがあります。このような環境では,-Xオプションには300より大きい値を指定してください。

(9) {-Z-j|-a}

空きページ,及び空きセグメントの解放方法を指定します。省略値は推奨モード又は互換モードによって次のように異なります。

省略値の動作モード

省略値

推奨モード

-a

互換モード

-Z

<適用基準>

空きセグメント解放が不要な場合は-Zを指定してください。空きセグメント解放をする場合,オンラインサービス停止中に,-jオプション指定のpdreclaimの実行時間を確保できるときは,-jを指定してください。実行時間を確保できない場合は-aを指定してください。

<注意事項>
  • 空きセグメント解放をする場合で,使用中セグメント内のページがすべて未使用ページであっても,解放されないケースがあります。

    -jオプション指定の場合,1表に対して,表格納用RDエリアごとに解放しないセグメントが一つあります。

    -aオプション指定の場合,1表に対して,表格納用RDエリアごとに解放しないセグメントが二つ(リバランス表の場合は1,024個)あります。

  • -jオプションを指定して空きセグメントを解放すると,グローバルバッファ上にある解放対象の表又はインデクスの更新バッファがDBに書き込まれ,更新バッファ及び参照バッファはグローバルバッファ上から削除されます。そのため,pdreclaim実行直後は該当する表又はインデクスのバッファヒット率が低くなります。バッファヒット率を上げたい場合,pdpgbfonを使用して,再度グローバルバッファ上へデータを読み込んでください。

-Z:

-Zオプションを指定した場合,空きページだけ解放し,空きセグメントは解放しません。

-j:

-jオプションを指定した場合,処理中の表,インデクスはアクセスできなくなります。したがって,次のような使い方をしてください。

  1. 昼のオンライン中には-Zオプションを指定(0904互換モードの場合は-a,-jともに指定なし)のpdreclaimを実行する。

  2. 夜の夜間バッチで,-j指定のpdreclaimを実行する。

-jオプションを指定すると,解放した未使用セグメントは,以前確保していた表,インデクス以外でも使用できるようになります。ただし,-k tableの場合は表格納用RDエリア,-k indexの場合はインデクス格納用RDエリアにEXモードの排他が掛かるため,pdreclaimとUAPとの同時実行ができなくなります。

-a:

-aオプションを指定した場合,pdreclaimが表,インデクスを処理中であっても,UAPや他ユティリティからアクセスできます。ただし,空きセグメント解放の処理時間は長くなり,システムログファイルのログ量も増加します。システムログファイルの見積もりについては,マニュアル「HiRDB Version 9 システム導入・設計ガイド」を参照してください。

また,-aオプションを指定すると,一つの表又はインデクスの格納RDエリアごとに,最大2個の解放しないセグメントが発生します。リバランス表の場合は,格納RDエリアごとに最大1,024個の解放しないセグメントが発生します。

(10) -x

インデクスキー値無排他を使用している場合又はコミットしていない削除データに排他を掛ける場合,インデクスの空きページ解放時にページコンパクションを実行して,インデクスの残存エントリを解放したい場合に指定します。ページコンパクションを実行することで,オンライン性能を維持したり,排他待ち及びデッドロックを回避したりできます。-xオプションは,-k indexの場合に指定できます。

ページコンパクションを実行すると,残存エントリを解放するときに,解放されるキーの量に比例してデータベース更新ログ(FJ)が出力されます。

<適用基準>

-xオプションを指定すると,ページコンパクションのオーバヘッドが発生します。このため,データベース更新ログ(FJ)の出力量を抑えたい場合,又は性能を優先したい場合は,-xオプションを指定しないでください。

(11) -p

コミット時点で更新バッファをデータベースに反映する場合に指定します。UAPと同時に実行する場合に-pオプションを指定すると,シンクポイント処理の負荷を軽減できるので,ほかのトランザクション性能に与える影響を小さくできます。ただし,pdreclaimの性能は-pオプションを指定しない場合より悪くなります。

また,シンクポイントダンプ取得前に,コミットが取得されるように,-mオプションを指定してコミット間隔を設定してください。

なお,-pオプション指定のpdreclaimを,サーバ当たり10個まで同時実行できます。上限を超えたpdreclaimはエラー終了します。

(12) -n 排他制御リトライ回数

   〜<符号なし整数>((0〜3600))《0》

-nオプションには,空きセグメント解放の排他取得要求を解除する上限の回数を指定します。なお,-nオプションは空きセグメント解放の場合だけ有効となります。このため,-nオプションを指定する場合は,-jオプションも併せて指定してください。

空きセグメント解放の排他取得要求の解除について説明します。

-jオプションを指定して空きセグメント解放をすると,RDエリアにEXモードの排他を掛けます。このため,ほかのトランザクションで処理中のRDエリアに対して空きセグメント解放を実行すると,排他解除待ちになるおそれがあります。

空きセグメント解放が排他解除待ち状態のときに,更にほかのトランザクションがRDエリアに対して排他を取得すると,最初にRDエリアに対して排他取得したトランザクションと空きセグメント解放が,排他解除をするまで待ち状態となります。

この場合に,-nオプションを指定していると,-wオプションに指定した時間が経過すると,空きセグメント解放の排他取得要求を解除し,ほかのトランザクションの排他解除待ちを優先できます。空きセグメント解放は,-wオプションに指定した値までの時間,排他が解除されるのを待ちます。このため,-nオプションを指定する場合,-wオプションの指定も必要になります。

なお,空きセグメントが解除されない場合,いったん,空きセグメント解放の排他取得要求を解除し,再度,空きセグメント解放の排他取得要求をします。

排他取得要求と排他待ちキューの関係を,次の図に示します。

図11‒10 排他取得要求と排他待ちキューの関係

[図データ]

また,-nオプションを指定することで,最大「-wオプションの指定値×-nオプションの指定値」の時間だけ排他解除待ちをします。この「-wオプションの指定値×-nオプションの指定値」の時間が,option文のexectimeオペランドのpdreclaim実行監視時間を超える場合,排他解除待ち中にKFPL11111-Eメッセージを出力して,pdreclaimは強制終了します。このため,-nオプションには次の内容を考慮して,適切な値を設定してください。

-nオプションとpdreclaim実行監視時間の関係

A+B+C < D×60

(凡例)

A:トランザクション決着待ち時間(-wオプションの指定値)

B:空きセグメント解放の排他待ち時間(-wオプションの指定値×-nオプションの指定値)

C:空きセグメント解放の実行時間

D:option文のexectimeオペランドのpdreclaim実行監視時間

(13) -s サーバ名

   〜<識別子>

このオプションはHiRDB/パラレルサーバの場合に指定できます(HiRDB/シングルサーバの場合に指定しても無視されます)。

pdreclaimの実行制御をするバックエンドサーバの名称を指定します。

<適用基準>

省略した場合でも,自動的にどれかのバックエンドサーバが選択されるため,通常時は指定する必要はありません。

pdreclaimを大量に同時実行する場合に,1サーバ内でpdrorg用ユティリティサーバプロセス「0mrorg」が32個以上となる場合に指定してください。0mrorgの個数は,pdls -d prcコマンドの結果のプロセスID(0mrorg)が何個開始されているかを調べれば分かります。

(14) 制御情報ファイル名

   〜<パス名>

pdreclaimの制御文を記述した制御情報ファイルの名称を指定します。

制御情報ファイルには,次に示す制御文を記述できます。各制御文については,「idxname文(インデクスの情報の記述)」,「option文(オプションの情報の記述)」を参照してください。なお,制御情報ファイル中にコメントは記述できません。