Hitachi

ノンストップデータベース HiRDB Version 10 構造型データベース機能


12.3.1 environment文

environment文には,データロードまたはフォーマットライトの基本的な動作条件を指定します。

指定形式(データロードの場合)

 environment
 
       schema = SDBデータベース名
 
       logmode = {all|no}
 
     〔purge = {yes|no}〕
 
     〔exectime = pdsdblodコマンドの実行時間の上限〕
 
     〔recnomsg = 処理経過メッセージの出力間隔〕
 
     〔infmsglvl = {lvl0|lvl1|lvl2}〕
 
     〔recfree = レコード型名,(〔ページ内の未使用領域の比率〕
                 ,セグメント内の空きページの比率)〕
 
     〔divermsg = {put|noput}〕
 
     〔generation = 世代番号〕

指定形式(フォーマットライトの場合)

 environment
 
       schema = SDBデータベース名
 
       logmode = {all|no}
 
     〔purge = {yes|no}〕
 
     〔exectime = pdsdblodコマンドの実行時間の上限〕
 
     〔recnomsg = 処理経過メッセージの出力間隔〕
 
     〔infmsglvl = {lvl0|lvl1|lvl2}〕
 
 
     〔recfree = レコード型名,(〔ページ内の未使用領域の比率〕
                 ,セグメント内の空きページの比率)〕
 
     〔generation = 世代番号〕
schema = SDBデータベース名

〜<識別子>((1〜30バイト))

データロード,インデクスの再作成,またはフォーマットライトを実行するSDBデータベースの名称を指定します。SDBデータベース定義のSCHEMA句に指定したSDBデータベース名を指定します。

SDBデータベース名を引用符('')で囲んだ場合,英大文字と英小文字が区別されます。引用符('')で囲まない場合,すべて英大文字として扱われます。

logmode = {all|no}

データロード,インデクスの再作成,またはフォーマットライトを実行する際,システムログを取得するかどうかを指定します。

all:システムログを取得します(ログ取得モード)。

no:システムログを取得しません(ログレスモード)。

システムログを取得するかどうかによる運用差異を次の表に示します。

表12‒4 システムログを取得するかどうかによる運用差異

項番

比較項目

ログ取得モードの場合

ログレスモードの場合

1

データロードまたはフォーマットライトの処理に掛かる時間

システムログを取得する分,データロードまたはフォーマットライトに掛かる時間が長くなります。

システムログを取得しない分,データロードまたはフォーマットライトに掛かる時間が短くなります。

2

pdsdblodコマンドが異常終了したときのRDエリアの状態

ロールバックするため,RDエリアの状態は変わりません(障害閉塞しません)。

障害対策後,pdsdblodコマンドを再実行します。

ロールバックしないため,RDエリアは障害閉塞します。障害閉塞を解除するには,pdmodコマンドで,RDエリアを再初期化します。

RDエリアを再初期化し,障害対策後,pdsdblodコマンドを再実行します。

《留意事項》

ログレスモードの場合,SDBデータベースに格納するレコード数やインデクス数に比例した大量のシステムログは取得しません。ただし,当該RDエリアをログレスモードで更新したことを記録するシステムログをRDエリア数に比例して取得します。システムログ量の計算式については,「3.5.1(5) HiRDB/SDデータベース作成ユティリティ(pdsdblod)実行時のシステムログ量」を参照してください。

更新可能なオンライン再編成の実行時,追い付き反映キー対応表については,logmode = noを指定してもシステムログが取得されます。

purge = {yes|no

データロードまたはフォーマットライトを実行する際,格納済みの既存レコードを削除するかどうかを指定します。

yes:

既存レコードを削除してから,データロードまたはフォーマットライトを実行します。初期データロードとして動作します。

no:

既存レコードを削除しないで,データロードまたはフォーマットライトを実行します。追加データロードとして動作します。

SDBデータベースの再編成のリロードとして実行する場合は,yesを指定してください。追加データロードの場合は,noを指定してください。

初期データロードなど,レコードが格納されていないSDBデータベースに対してデータロードまたはフォーマットライトする場合は,このオペランドを指定する必要はありません。デフォルト値のnoでデータロードまたはフォーマットライトできます。

なお,このオペランドにnoを指定,または省略した場合,次の指定はできません。

  • oreload文

  • load文のtypeオペランドにsingle

  • load文のwriteオペランドにuse

参考

格納済みのデータがない場合でもこのオペランドにnoを指定できますが,dupkeyckオペランドにyesを指定すると,格納済みのデータがなくても重複キーのチェック処理が行われ,その分処理が遅くなります。そのため,格納済みのデータがない場合は,dupkeyckオペランドにnoを指定することを推奨します。

exectime = pdsdblodコマンドの実行時間の上限

〜<符号なし整数>((0〜35,791,394))(単位:分)

pdsdblodコマンドの実行時間の上限を分単位で指定します。このオペランドに指定した時間を超えてもpdsdblodコマンドの処理が完了しない場合,pdsdblodコマンドを強制終了します(異常終了の扱いになります)。このとき,無応答障害の原因調査のための障害情報が$PDDIR/spool/saveディレクトリ下に出力されます。出力される障害情報を次に示します。

  • コアファイル

  • .debファイル

  • コマンド名<障害情報の出力日時>プロセスID.txtファイル

注※

このファイルには,次に示すコマンドの実行結果が出力されます。

・pdls -d lck

・pdls -d rpc -a

なお,このオペランドは無応答障害の検知を目的としています。したがって,pdsdblodコマンドの予想実行時間に対して,十分に余裕をもたせた時間を指定してください。例えば,pdsdblodコマンドの予想実行時間が7分程度の場合,このオペランドには20分ぐらいの時間を指定してください。

データロードを夜間バッチとして実行するときなどにこのオペランドの指定を推奨します。このときにこのオペランドを指定しておくと,通信障害(一時的な障害を含む)やディスク障害などが発生して,pdsdblodコマンドが無応答状態になった場合,pdsdblodコマンドを自動的に強制終了させることができます。これによって,pdsdblodコマンドの無応答状態が,UAPやほかのコマンドの実行に影響が及ぶのを防ぐことができます。

《留意事項》

  • このオペランドに0を指定した場合は,pdsdblodコマンドの実行時間の上限は設定されません。

  • このオペランドを省略した場合,システム定義のpd_utl_exec_timeオペランド,またはpd_cmd_exec_timeオペランドに指定した時間が,pdsdblodコマンドの実行時間の上限になります。pd_utl_exec_timeオペランド,およびpd_cmd_exec_timeオペランドについては,マニュアル「HiRDB システム定義」を参照してください。

    オペランドの優先順位は高い順に次のとおりです(優先順位は1の指定がいちばん上位です)。

    優先順位

    指定個所

    オペランド名

    1

    pdsdblod制御文のenvironment文

    exectime

    2

    システム定義

    pd_utl_exec_time

    3

    システム定義

    pd_cmd_exec_time

recnomsg = 処理経過メッセージの出力間隔

〜<符号なし整数>((1〜1,000))《10》(単位:1万件)

データロードまたはフォーマットライトの処理経過メッセージの出力間隔を,1万件(レコード)単位で指定します。例えば,このオペランドに5を指定すると,データロードが5万件(レコード)終わるごとに経過メッセージ(KFPB63011-I)が出力されます。

infmsglvl = {lvl0|lvl1|lvl2}

データロード,インデクスの再作成,またはフォーマットライト時に出力される次に示すメッセージを出力するかどうかを指定します。

  • KFPB63035-I(インデクス情報ファイルに関するメッセージ)

  • KFPB63036-I(インデクスの一括作成の開始を知らせるメッセージ)

  • KFPB63037-I(インデクスの一括作成の終了を知らせるメッセージ)

  • KFPB63038-I(インデクスの一括作成の開始を知らせるメッセージ)

  • KFPB63039-I(インデクスの一括作成の終了を知らせるメッセージ)

  • KFPB63040-I(インデクス情報ファイルの削除を知らせるメッセージ)

  • KFPB63044-I(インデクスの抽出開始を知らせるメッセージ)

  • KFPB63045-I(インデクスの抽出終了を知らせるメッセージ)

  • KFPB63046-I(インデクスの抽出開始を知らせるメッセージ)

  • KFPB63047-I(インデクスの抽出終了を知らせるメッセージ)

インデクス数や,インデクス格納用RDエリア数に比例して,上記のメッセージの出力回数が多くなります。

lvl0:

上記のメッセージのうち,次のメッセージを除いて,標準出力,syslogfile,およびメッセージログファイルに出力します。

  • KFPB63036-I(インデクスの一括作成の開始を知らせるメッセージ)

  • KFPB63037-I(インデクスの一括作成の終了を知らせるメッセージ)

  • KFPB63044-I(インデクスの抽出開始を知らせるメッセージ)

  • KFPB63045-I(インデクスの抽出終了を知らせるメッセージ)

lvl1:

上記のメッセージをsyslogfileおよびメッセージログファイルに出力します。

ただし,次のメッセージは,標準出力にも出力します(次のメッセージ以外は標準出力には出力しません)。

  • KFPB63036-I(インデクスの一括作成の開始を知らせるメッセージ)

  • KFPB63037-I(インデクスの一括作成の終了を知らせるメッセージ)

  • KFPB63038-I(インデクスの一括作成の開始を知らせるメッセージ)

  • KFPB63039-I(インデクスの一括作成の終了を知らせるメッセージ)

  • KFPB63044-I(インデクスの抽出開始を知らせるメッセージ)

  • KFPB63045-I(インデクスの抽出終了を知らせるメッセージ)

lvl2:

上記のメッセージは,標準出力,syslogfile,およびメッセージログファイルに出力しません。代わりにワークファイルに上記のメッセージを出力します。

ただし,次のメッセージについては,標準出力,syslogfile,メッセージログファイル,およびワークファイルに出力します。

  • KFPB63036-I(インデクスの一括作成の開始を知らせるメッセージ)

  • KFPB63037-I(インデクスの一括作成の終了を知らせるメッセージ)

  • KFPB63044-I(インデクスの抽出開始を知らせるメッセージ)

  • KFPB63045-I(インデクスの抽出終了を知らせるメッセージ)

通常は,このオペランドを省略するか,またはlvl1を指定してください。lvl2を指定してワークファイルにメッセージを出力するのは,トラブルシュート目的(pdsdblodコマンドの動作を確認するため)のときだけにしてください。

《ワークファイルの出力先》

ワークファイルの出力先ディレクトリは,次に示す優先順位(1の指定がいちばん上位)に従って決定されます。

  1. システム定義のpd_tmp_directoryオペランドに指定したディレクトリ

  2. 環境変数TMPDIRに指定したディレクトリ

  3. /tmpディレクトリ

1のディレクトリにワークファイルを出力することを推奨します。1のディレクトリにワークファイルを出力すると,pdcspoolコマンドでワークファイルを一括削除できるため,ファイル削除の手間が少なく済みます。

処理対象のRDエリアがあるサーバマシンのディレクトリにワークファイルが出力されます。ファイル名は,PDSDBLOAD-aa....aa-bb....bbになります。aa....aaはサーバ名,bb....bbはファイル作成時間およびプロセスIDになります。

参考

ファイルオープンエラーや入出力エラーなどによってワークファイルにメッセージが出力できない場合でもpdsdblodコマンドの処理は続行されます。

《ワークファイルの出力形式》

ワークファイルの出力形式を次に示します。

AAAAA hh:mm:ss BBBB CC....CC KFPB63nnn-I XX....XX

AAAAA:プロセスID

hh:mm:ss:メッセージの出力時刻

BBBB:ユニット識別子

CC....CC:メッセージの出力要求元のサーバ名

KFPB63nnn-I:メッセージID

XX....XX :メッセージテキスト

ユニット識別子とメッセージの出力要求元のサーバ名は,出力されないことがあります。

recfree = レコード型名,(〔ページ内の未使用領域の比率〕,セグメント内の空きページの比率)

SDBデータベース格納定義のPCTFREEオペランドの指定値を変更して,データロードまたはフォーマットライトを実行する場合にこのオペランドを指定します。このオペランドを省略した場合は,SDBデータベース格納定義のPCTFREEオペランドの指定値に従って,ページ内の未使用領域の比率やセグメント内の空きページの比率が設定されます。

ページ内の未使用領域の比率およびセグメント内の空きページの比率については,「3.2.5 レコード格納時の空き領域の作成(サブページ分割をしない場合)」または「3.2.6 レコード格納時の空き領域の作成(サブページ分割をする場合)」を参照してください。

レコード型名:

〜<識別子>((1〜30バイト))

4V FMBまたはSD FMBのSDBデータベースの場合は,ページ内の未使用領域の比率の変更を行うルートレコードのレコード型名を指定します。ルートレコードのページ内の未使用領域の比率は,子レコードにも適用されます。

4V AFMのSDBデータベースの場合は,ページ内の未使用領域の比率の変更を行う仮想ルートレコードのレコード型名を指定します。仮想ルートレコードのページ内の未使用領域の比率は,子レコードにも適用されます。

ページ内の未使用領域の比率:

〜<符号なし整数>((0〜99))(単位:%)

ページ内の未使用領域の比率を%単位で指定します。

なお,サブページ分割をしている場合,ページ内の未使用領域の比率は,サブページ内の未使用領域の比率になります。例えば,30を指定した場合,サブページ内の未使用領域の比率が30%になります。

セグメント内の空きページの比率:

〜<符号なし整数>((0〜50))(単位:%)

セグメント内の空きページの比率を%単位で指定します。

ページ内の未使用領域の比率およびセグメント内の空きページの比率の指定値を小さくすると,RDエリアに格納できるレコード件数が多くなります。逆に,指定値を大きくすると,RDエリアに格納できるレコード件数が少なくなります。したがって,データロード時のRDエリア容量不足を一時的に回避したい場合は,SDBデータベース格納定義のPCTFREEオペランドで指定した値より小さい値を指定してください。

divermsg = {put|noput} 【データロード限定オペランド】

入力データファイル中に処理対象RDエリア以外に格納されるレコードがある場合,そのレコードを論理エラーとするかどうかを指定します。RDエリア単位のデータロードを実行する場合にこのオペランドの指定を検討してください。

put:

入力データファイル中に格納対象外のレコードがあった場合,そのレコードを論理エラーとして扱います。論理エラーの情報は,実行結果ファイルおよび論理エラー情報ファイルに出力されます。

noput:

入力データファイル中に格納対象外のレコードがあった場合でも,そのレコードを論理エラーとして扱いません。

入力データファイル中に格納対象外のレコードが大量にあるときにputを指定すると,論理エラーの情報が実行結果ファイルに大量に出力されます。このような場合はnoputを指定してください。

参考

putまたはnoputのどちらを指定しても,格納対象外のレコードはデータベースに格納されません。

generation = 世代番号

〜<符号なし整数>((0〜10))

処理対象のRDエリアの世代番号を指定します。このオペランドは,インナレプリカ機能使用時に指定します。

なお,SD FMBのSDBデータベースを使用している場合,このオペランドは省略してください。

0:オリジナルRDエリアを処理対象とする場合に指定します。

1〜10:指定した世代のレプリカRDエリアを処理対象とする場合に指定します。

  • 更新可能なオンライン再編成時のデータロードの場合

    このオペランドには,0(オリジナルRDエリア)を指定してください。0以外の値(レプリカRDエリア)を指定すると,エラーになります。

    また,オリジナルRDエリアがオンライン再編成閉塞でない場合も,エラーになります。

  • 上記以外の場合

    このオペランドを省略した場合,カレントRDエリアが処理対象になります。カレントRDエリア以外のRDエリアを処理対象とする場合に,このオペランドを指定してください。

《運用上の注意事項》

  • レプリカRDエリアに対してRDエリア単位のデータロードまたはフォーマットライトを実行する場合,load文のareaオペランドにはオリジナルRDエリア名を指定してください。このオペランドには処理対象のRDエリアの世代番号を指定してください。

  • pdsdbrogコマンドでレコードをアンロードし,pdsdblodコマンドでデータロードする場合,アンロードとデータロードの実行時に同じ世代番号を指定してください。異なる世代番号を指定してもチェックアウトされないため,指定された世代番号のRDエリア(アンロードを実行したRDエリアとは異なるRDエリア)にデータロードされます。

    参考

    SDBデータベースが横分割されているため,処理対象のRDエリアが複数ある場合,HiRDB/SDは次に示すチェックを行います。チェックの結果,不一致がある場合,KFPB63306-Eメッセージを出力してリターンコード8でpdsdblodコマンドが終了します。

    • RDエリアの世代番号のチェック:

      このオペランドを指定した場合は,指定した世代番号のRDエリアがあるかどうかをチェックします。レコードが格納されているRDエリアとインデクスが格納されているRDエリアの世代番号をチェックします。

      このオペランドを省略した場合は,レコードが格納されているRDエリアとインデクスが格納されているRDエリアのカレントRDエリアの世代番号が同じかどうかをチェックします。

    • RDエリアのレプリカステータスのチェック:

      処理対象のRDエリアにカレントRDエリアとカレントRDエリア以外が混在していないか,各RDエリアのレプリカステータスをチェックします。