12.4.1 規則
- 〈この項の構成〉
(1) pdsdblodコマンドの実行条件
-
pdsdblodコマンドは,HiRDBが稼働中のときだけ実行できます。
-
pdsdblodコマンドは,システムマネジャがあるサーバマシンで実行してください。
-
pdsdblodコマンドの実行時には,次のサーバが稼働している必要があります。
-
システムマネジャ
-
1つ以上のフロントエンドサーバ
-
ディクショナリサーバ
-
データロードまたはフォーマットライト対象のRDエリアを管理しているバックエンドサーバ
-
-
RDエリアの状態がpdsdblodコマンドの実行条件を満たしていない場合,pdsdblodコマンドはエラーになります。この場合,「付録I.1 RDエリアの状態によるユティリティの実行可否」を参照して,RDエリアの状態を変更してください。
-
SDBディレクトリ情報が常用常駐領域に常駐化されていないと,pdsdblodコマンドが実行できません。また,全ユニットの常用常駐領域中のSDBディレクトリ情報が一致している必要があります。
(2) コマンドの実行者
pdsdblodコマンドを実行する際,CONNECT権限が必要になります。
(3) コマンド実行前の作業
-
入力データファイルを準備し,処理対象のRDエリアがあるサーバマシンに格納してください。
-
クライアント環境定義のPDUSERオペランドにpdsdblodコマンドの実行ユーザの認可識別子とパスワードを指定してください。
このとき,OSログインユーザの簡易認証機能は使用できません。
-
pdsdblod制御文を指定した制御文ファイルを準備し,システムマネジャがあるサーバマシンに格納してください。また,制御文ファイルを格納するディレクトリに対する実行権限,読み込み権限,および書き込み権限をpdsdblodコマンドの実行ユーザに付与してください。
-
pdsdblod制御文のオペランドに指定するディレクトリ(実行結果ファイルを格納するディレクトリなど)は事前に作成しておいてください。また,作成したディレクトリの実行権限,読み込み権限,および書き込み権限をHiRDB管理者に付与してください。
-
PDDIR,PDCONFPATH,およびLANG環境変数が正しく設定されているかを確認してください。
-
pdsdblodコマンドを実行する前に,pdsdbarc -aコマンドでSDBディレクトリ情報に関する情報を表示し,全ユニットの常用常駐領域のSDBディレクトリ情報が一致しているかどうかを確認してください。
-
インデクス情報を作成するために,データロードまたはフォーマットライトの処理中に次に示すファイルが一時的に作成されます。
-
インデクス情報ファイル
-
ソート用ワークファイル
これらのファイルは,インデクスを格納するRDエリアがあるサーバマシン上に作成されます。レコード件数に比例して上記のファイル容量も大きくなるため,大量のレコードをデータロードする場合は,ディスクの空き容量を確認するようにしてください。上記ファイルの容量見積もり式については,「3.6.1(1) HiRDB/SDデータベース作成ユティリティ(pdsdblod)実行時のファイルの容量」を参照してください。
なお,上記ファイルはデータロードまたはフォーマットライトが正常に終了すると,自動的に削除されます。
また,性能面に大きな影響を及ぼすソート用バッファサイズを指定することを推奨します。pdsdblod制御文のidxload文のsortdirオペランドでソート用バッファサイズを指定します。
- 参考
-
インデクス情報ファイル,ソート用ワークファイルの出力先ディレクトリは,次に示す優先順位に従って決まります。1の指定がいちばん優先順位が高くなります。
-
pdsdblod制御文のidxload文で指定した出力先ディレクトリ
-
システム定義のpd_tmp_directoryオペランドに指定した出力先ディレクトリ
-
環境変数TMPDIRに指定したディレクトリ
-
/tmpディレクトリ
-
-
(4) 推奨する運用方法
-
pdsdblodコマンドを実行する前に,処理対象のRDエリアをpdholdコマンドで閉塞することを推奨します。
- 参考
-
pdsdblodコマンドの実行中は処理対象のRDエリアにアクセスできません。UAPやほかのコマンドがアクセスしようとした場合,排他待ち状態になり,排他待ち時間のタイムアウトまでUAPやコマンドにエラーが返りません。pdholdコマンドでRDエリアを閉塞しておくと,UAPやほかのコマンドがRDエリアにアクセスしたときにすぐにエラーが返ります。
-
pdsdblod制御文のenvironment文のpurgeオペランドにyesを指定すると,既存の格納レコードが削除されてから,データロードまたはフォーマットライトが実行されます。なお,レコードが格納されていないときにpurgeオペランドにyesを指定してもエラーにはなりません。
(5) インデクスを再作成する際のpdsdblodコマンドの同時実行可否
次のどちらかの条件を満たす場合は,複数のpdsdblodコマンドを同時に実行してインデクスを再作成することができます。
-
処理対象のSDBデータベースが異なる場合
-
処理対象のインデクスがあるBESが異なる場合
なお,処理対象となるインデクスが同一BESにある場合でも,処理対象となるインデクスのルートレコード型が異なるデータ格納用RDエリアに格納されているときは,複数のpdsdblodコマンドを同時に実行してインデクスを再作成できます。
処理対象となるインデクスのルートレコード型が同じデータ格納用RDエリアに格納されている場合は,pdsdblodコマンドを同時に実行してインデクスを再作成することはできません。
pdsdblodコマンドの同時実行可否の例を次に示します。この例では,同一BES内に,ルートレコード型を格納したRDエリア1とRDエリア2があるとします。このときのpdsdblod【1】とpdsdblod【2】が同時実行できるかどうかを説明しています。
実行するコマンド |
再作成対象のインデクス |
ルートレコード型を格納しているRDエリア |
pdsdblodコマンドの同時実行可否 |
---|---|---|---|
pdsdblod【1】 pdsdblod【2】 |
インデクス1 インデクス1 |
RDエリア1 RDエリア1 |
× |
pdsdblod【1】 pdsdblod【2】 |
インデクス1 インデクス2 |
RDエリア1 RDエリア1 |
× |
pdsdblod【1】 pdsdblod【2】 |
インデクス1 インデクス1 |
RDエリア1 RDエリア2 |
○ |
pdsdblod【1】 pdsdblod【2】 |
インデクス1 インデクス2 |
RDエリア1 RDエリア2 |
○ |