スケーラブルデータベースサーバ HiRDB Version 8 コマンドリファレンス(UNIX(R)用)
データロードする表,インデクス,及びLOB列が格納されているRDエリアのオープン属性,RDエリアの状態によって,pdloadの実行可否が変わります。pdloadの実行可否については,「付録C コマンド実行時のRDエリアの状態」を参照してください。
pdloadの最大同時実行数は,システム共通定義のpd_utl_exec_modeオペランドの指定値によって異なります。
通常のデータロード時はシンクポイントを取得しません。このため,データロード中にほかのUAPなどを実行してシステム障害が発生した場合など,再開始に要する時間が増大するため,できるだけデータロードとほかのUAPなどは同時に実行しないようにしてください。
同期点指定のデータロードの場合は,任意の行数単位にシンクポイントを取得できます。このため,通常のシンクポイントを取得しないデータロードに比べると,異常終了時の再開始に要する時間は短くなります。
各国文字データとして格納する入力データの値については,データがマルチバイトコードかどうかのチェックはしません。
EasyMTを利用して,VOS3などのメインフレームで作成したファイルを入力とする場合,pdloadでデータロードする前に,文字コードをpdsetupコマンドで指定した文字コードに変換する必要があります。
マルチボリュームMTを使用する場合,ボリュームの切り替え操作にMTguideを使用しますので,サーバマシンにMTguideが組み込まれている必要があります。
DECIMAL型の符号正規化機能を使用している場合,DECIMAL型の符号部は次のように扱われます。DECIMAL型の符号正規化機能については,マニュアル「HiRDB Version 8 システム運用ガイド」を参照してください。
HiRDBでの,DECIMAL型の符号部の仕様を次に示します。
符号部 | 意味 |
---|---|
X'C' | 正の値を示しています。 |
X'D' | 負の値を示しています。 |
X'F' | 正の値を示しています。 |
DECIMAL型の符号正規化機能を使用すると,データを挿入したときにDECIMAL型の符号部を次の規則に従って変換します。
埋込み変数のデータの符号部 | 正規化しない場合 | 正規化する場合 |
---|---|---|
X'A' | エラー | X'C'に変換 |
X'B' | エラー | X'D'に変換 |
X'C' | 無変換 | 無変換 |
X'D' | 無変換 | 無変換 |
X'E' | エラー | X'C'に変換 |
X'F' | 無変換 | X'C'に変換 |
X'0'〜X'9' | エラー | エラー |
0データの符号部 | 正規化しない場合 | 正規化する場合 |
---|---|---|
X'A' | エラー | X'C'に変換 |
X'B' | エラー | |
X'C' | 無変換 | |
X'D' | 無変換 | |
X'E' | エラー | |
X'F' | 無変換 |
このように,0データの正規化を実施すると,−0のデータが+0に変換されます。
なお,文字データを変換するDAT形式の入力データファイルの場合は,システム定義の指定に関係なく,正規化された値(正の値,0データの場合は符号部がX'C',又は負の値の場合は符号部がX'D')を格納します。
DECIMAL型の符号正規化機能を使用した場合,エラー情報ファイルに出力されるエラーデータのダンプイメージリスト,及びエラーデータファイルに出力される入力データ中のDECIMAL列は,pdloadがエラーを検知した列までは正規化された値で出力されます。
プラグインが提供する抽象データ型列がある表の場合は,コンストラクタ関数を呼び出して,該当する列へ格納する値を生成しデータロードできます。ただし,コンストラクタ関数が共用ライブラリで作成されていない場合はデータロードできません。
ユーザが定義した抽象データ型列がある表の場合は,該当する列へ格納する値の生成ができないため,データロードできません。
抽象データ型列がある表にバイナリ形式の入力データファイルを使ってデータロードする場合は,UOCを利用したデータロードはできません。
リバランス表にRDエリアを追加した場合,そのリバランス表に対してpdrbalを実行(リターンコード=0)していないと,追加したRDエリアへのデータロード(RDエリア単位のデータロード)はできません。
また,フレキシブルハッシュ分割表にデータロードする場合,ハッシュグループを無視して格納するため,pdrbalで再配置するデータがハッシュキー値とリンクしません。
外部表に対してデータロードはできません。
改竄防止表にデータロードする場合,次の注意事項があります。
pdloadの実行でトリガは動作しません。pdloadを実行する前に,表に定義されているトリガ定義の内容を確認してください。
pdloadの結果は,pddbstで確認できます(UAPの実行,又はpdrorgでのアンロードでも確認できます)。また,pdloadの処理が終了した場合は,リターンコードが返ります。pdloadのリターンコードを表5-52に示します。また,監査証跡表にpdloadを実行した場合のリターンコードを表5-53に示します。
表5-52 pdloadのリターンコード
リターンコード | 意味 | 対処方法 |
---|---|---|
0 | 正常終了。 入力データファイル中のすべてのデータをデータロードしました。 |
なし。 |
正常終了。 入力データファイル中のすべてのデータをデータロードした後ユティリティプロセス終了処理の通信で通信障害等による電文無応答が発生しました。 |
なし。 | |
正常終了。 入力データファイルの全データを,分割入力データファイルに出力しました。 |
分割入力データファイルを使用してRDエリア単位にデータロードをしてください。 | |
4 | 入力データのエラー。 入力データファイル中の一部のデータにエラーがあるため,当該データの処理をスキップしました。 |
追加モード(-dオプションを指定しない場合): 入力データファイルのエラーデータを修正してから,修正したデータだけ,データロードを再実行してください。 作成モード(-dオプションを指定した場合): 入力データファイルのエラーデータを修正してから,データロードを再実行してください。 |
入力データのエラー。 入力データファイル中の正常なデータは分割入力データファイルに出力しましたが,一部のエラーデータは分割入力データファイルに出力していません(-e オプション指定時は,エラーデータ検知時点まで分割入力データファイルに出力)。 |
エラー情報ファイルを参照し,入力データファイルのエラーデータを修正してから,再度分割入力データファイルを作成してください。 | |
8 | 入力データエラー。 option文のdataerrオペランドを指定した場合は,入力データファイル中にエラーがあるため,データロード処理をロールバックしました。 |
エラーの入力データを修正して,再度データロードを実行してください。 |
キー重複エラー。 インデクスの一括作成中にキー重複エラーを検知しました。 |
バックアップからDBを回復して,エラーの入力データを修正してください。その後,再度データロードを実行してください。 | |
異常終了。 エラーが発生したため,データロードの処理を途中で終了しました。 |
エラー原因を取り除いて,再度データロードを実行してください。 | |
異常終了。 入力データファイルのデータを,分割入力データファイルに出力できませんでした。 |
エラーメッセージを参照してエラーの原因を取り除いて,再度分割入力データファイルを作成してください。 | |
異常終了。 予期せぬエラーが発生しました。 |
再実行が必要かどうか判断を行って,データロードを実行してください。※1 | |
255 | データロードを強制停止。 pdloadプロセスをpdkillコマンドで強制停止しました。 |
再実行が必要かどうか判断を行って,データロードを実行してください。※1 |
1 | データロードを強制停止。 pdloadプロセスがアボートしました。 |
再実行が必要かどうか判断を行って,データロードを実行してください。※1 |
上記以外※2 | 異常終了。 pdloadプロセスが停止(消滅)しました(タスクマネージャによる終了等)。 |
再実行が必要かどうか判断を行って,データロードを実行してください。※1 |
表5-53 pdloadのリターンコード(監査証跡表の場合)
リターンコード | 意味 | 対処方法 |
---|---|---|
0 | 正常終了。 srcuoc文に指定した監査証跡ファイルの全世代のデータを監査証跡表にデータロードしました。 |
なし。 |
正常終了。 srcuoc文に指定した監査証跡ファイルの全世代のデータを監査証跡表にデータロードした後,ユティリティプロセス終了処理の通信で通信障害等による電文無応答が発生しました。 |
なし。 | |
4 | 警告終了。 srcuoc文に指定した監査証跡ファイルの中で,データロード待ち状態のファイルは監査証跡表にデータロードしましたが,閉塞又はデータロード済み状態のファイルはデータロードの処理をスキップしました。 |
監査証跡ファイルが閉塞状態でスキップした場合,閉塞の原因を取り除いて,再度データロードを実行してください。 監査証跡ファイルがデータロード済み状態でスキップした場合,通常はデータロード済みのため対処は不要です。あえてデータロードする必要があるときは,srcuoc文のmodeオペランドにforceを指定して再度実行してください。 |
8 | 異常終了。 エラーが発生したため,データロードの処理を途中で終了しました。 |
エラー原因を取り除いて,再度データロードを実行してください。 |
異常終了。 予期せぬエラーが発生しました。 |
再実行が必要かどうか判断を行って,データロードを実行してください。※1 | |
255 | データロードを強制停止。 pdloadプロセスをpdkillコマンドで強制停止しました。 |
再実行が必要かどうか判断を行って,データロードを実行してください。※1 |
1 | データロードを強制停止。 pdloadプロセスがアボートしました。 |
再実行が必要かどうか判断を行って,データロードを実行してください。※1 |
上記以外※2 | 異常終了。 pdloadプロセスが停止(消滅)しました(タスクマネージャによる終了等)。 |
再実行が必要かどうか判断を行って,データロードを実行してください。※1 |
pdload実行中に処理を中断したい場合は,pdcancelコマンドを使用します。なお,pdloadが無応答障害(定例ジョブなど,一定時間でデータロード処理が終わるはずなのに終わらない)と判断して強制終了させる場合は,pdlsコマンド(-d rpc -a指定)の表示結果をリダイレクトでファイルに取得した後,pdcancel -dコマンドを実行してください。
この場合,作成モード(-dオプション指定)でpdloadを実行しているときは,表の格納データはすべて削除されます。また,追加モード(-dオプションなし)でpdloadを実行しているときは,処理がロールバックされます。
再編成時期予測機能を使用している場合,pdloadをkillコマンドなどのシグナル割り込みで強制終了すると,運用履歴表が更新できません。再編成時期予測機能を使用している場合にpdloadを終了させるときは,必ずpdcancelコマンドを使用してください。
EasyMTにLOB入力ファイルを用意する場合,作成するLOB列構成基表の作成順の行と列を考慮する必要があります。作成順に関係なくランダムに用意した場合,LOB入力ファイルのサーチ処理で多大な時間が掛かります。
LOB列がある表にデータロードする場合,LOB列構成基表,及びLOB列のRDエリアとバッファなどの資源は,すべて準備しておく必要があります。LOB列構成基表だけを作成する場合も同様です。
pdload実行時に使用できるファイルの媒体を次に示します。なお,通常ファイルを使用する場合,ファイルのオープン処理に伴い,OSのオペレーティングシステムパラメタ(カーネルパラメタ)のmaxfiles,nfile,及びnflocksを消費します。
ファイル | 通常ファイル | 固定長ブロックテープ | 可変長ブロックテープ |
---|---|---|---|
入力データファイル | ○ | ○※ | ○ |
制御情報ファイル | ○ | × | × |
列構成情報ファイル | ○ | × | × |
ナル値・関数情報ファイル | ○ | × | × |
エラー情報ファイル | ○ | × | × |
エラーデータファイル | ○ | × | × |
LOB入力ファイル | ○ | × | ○ |
LOB中間ファイル | ○ | × | × |
インデクス情報ファイル | ○ | × | × |
ソート用ワークファイル | ○ | × | × |
処理結果ファイル | ○ | × | × |
データ連動の対象となる抽出側データべースに対してpdloadを実行する場合,次の点に注意してください。
ラージファイルを利用すると,1ファイル2ギガバイトを超えるファイルを使用できます。pdloadで使用するファイルのラージファイル利用可否を表5-54に示します。なお,プロセスが生成できるファイルサイズの上限は,OSの設定値が有効となります。
HiRDB管理者及びルートユーザでのシステム資源の制限値は,生成するファイルサイズより大きな値,又は無制限にしてください。特に,AIXはデフォルトのファイルサイズが1ギガバイトのため,注意が必要です。システム資源の制限値は,OSのlimitコマンド又はulimitコマンドで確認できます。AIXでファイルサイズ制限を変更する場合,/etc/security/limitsファイルの修正も必要です。詳細については,各OSのマニュアル,及びシェルのマニュアルを参照してください。なお,HiRDBはOSのinitから起動されるプロセスのため,ルートユーザが変更した値を有効にするにはOSの再起動が必要です。
表5-54 pdloadで使用するファイルのラージファイル利用可否
ファイル種別 | ラージファイルの利用可否 |
---|---|
入力データファイル | ○ |
エラー情報ファイル | ○ |
エラーデータファイル | ○ |
LOB入力ファイル | ○ |
LOB中間ファイル | ○ |
インデクス情報ファイル | ○ |
ソート用ワークファイル | ○ |
MT属性定義ファイル | × |
処理結果ファイル | ○ |
SQL定義ファイル | ○ |
行の最後がコンマ(,)で終わっているDAT形式の入力データファイルをデータロードする場合に,「列数が不一致」などの理由でデータロードできないときがあります。このような場合は,列構成情報ファイルに表の列名をすべて記述して,最後にスキップデータ文を記述します。この場合,入力データの修正は不要です。
なお,表の列数が多く列構成情報ファイルの記述が大変なときは,次の方法で作成できます。
HiRDB Text Search Plug-inの差分インデクス機能を使用している場合,クライアント環境定義PDPLUGINNSUBの指定によって,pdloadが更新するインデクスを次に示します。
既存データの有無 | PDPLUGINNSUBの指定 | ||
---|---|---|---|
Y | N | 設定なし | |
既存データなし(作成モードのデータロード) | M | M | M |
既存データあり(追加モードのデータロード) | S | M | S |
ユニークキーインデクス又は主キーインデクスを定義した表にデータロードをする場合は,次に示す注意が必要です。
データロード対象の表を基にリストを作成している場合,データロード後にリストを使用して検索したときには,次のような現象が発生します。
このような場合,リストを使用して検索する前に,リストを再作成する必要があります。
pdload実行中には,次に示すサーバ当たりの排他資源が必要となります。
X=2×(a+b+c+1)+(b×d)+h+i
Y=e+f+g
pdloadは,標準出力に経過メッセージを出力しながら処理をします。また,エラー発生時は,標準エラー出力にエラーメッセージを出力します。標準出力や標準エラー出力への出力が抑止されている環境でpdloadを実行した場合,メッセージ出力待ちでpdloadが無応答状態となったり,メッセージログファイルにKFPL20003-Eメッセージを出力してpdloadが異常終了したりすることがあります。そのため,標準出力や標準エラー出力への出力ができない環境ではpdloadを実行しないでください。なお,標準出力,及び標準エラー出力に出力するメッセージの順序や数は,メッセージログファイルやsyslogfileと一致しないことがあります。正確にメッセージを把握したい場合は,メッセージログファイル又はsyslogfileを参照してください。
共用表にデータロードする場合,共用表,及び処理対象の表に定義した共用インデクスを格納しているRDエリアに対して,EXモードで排他を掛けます。そのため,該当するRDエリアに定義したほかの表やインデクスも参照,及び更新ができません。共用表に対してデータロードする場合の排他制御モードについては,「付録B.2 ユティリティの排他制御モード」を参照してください。
参照制約又は検査制約を定義した表に対してデータロードする場合,pdloadはデータの整合性が保たれているかどうかのチェックをしません。そのため,データロードする場合は,pdconstckを使用して整合性を確認する必要があります。表の整合性確認手順については,マニュアル「HiRDB Version 8 システム導入・設計ガイド」を参照してください。
うるう秒を含んだ時刻データ又は時刻印データをデータロードする場合,pd_leap_secondオペランドにYを指定します。このオペランドでYを指定すると,時刻データ,又は時刻印データの秒で指定できる範囲が0〜61秒になります。
作成モード(-d指定)のデータロードをすると,再編成時期予測機能の結果に表やインデクスのデータを削除した運用履歴が反映されます。
また,pdloadが異常終了した状態のまま,pddbstの状態解析結果蓄積機能を実行すると,データロード完了後の状態で再編成時期を予測できないため,予測結果が不正※となります。したがって,pdloadが異常終了した場合は,pdloadを再実行して正常終了させた状態で,pddbstの状態解析結果蓄積機能を実行してください。
pdloadの特定機能を使用する場合,オプション,及び制御文の指定可否が変わります。特定機能とは次の機能をいいます。
特定機能使用時のオプション,及び制御文の指定可否を表5-55,及び表5-56に示します。なお,監査証跡表へのデータ登録については,マニュアル「HiRDB Version 8 システム運用ガイド」を参照してください。
表5-55 特定機能使用時のオプションの指定可否
オプション | 指定可否 | |
---|---|---|
監査証跡表へのデータ登録 | 分割入力データファイルの作成 | |
-d | ○ | × |
-a | × | ○(入力データファイルが固定長データ形式の場合-aを指定) |
-b | ◎(-bを指定) | × |
-W | ◎ | × |
-w | × | × |
-U | × | × |
-i | ○ | × |
-l | ○ | × |
-k | × | × |
{-c|-v} | ○(-vを指定) | ○(入力データファイルが固定長データ形式の場合-cを指定) |
-n | ○ | × |
-u | ○ | ○ |
-x | ○ | × |
-f | × | × |
-s | × | ○ |
-e | × | ○ |
-r | × | × |
-z | ○(省略した場合でも指定したと仮定) | ○ |
-y | ○ | × |
-o | ○ | × |
-m | ○ | ○ |
-X | ○ | ○ |
-q | × | × |
-K | × | × |
-G | × | × |
表5-56 特定機能使用時の制御文の指定可否
制御文 | オペランド | 指定可否 | |
---|---|---|---|
監査証跡表へのデータ登録 | 分割入力データファイルの作成 | ||
mtguide | − | × | × |
emtdef | − | × | × |
source | − | ◎((uoc)を指定) | ◎(入力データファイルを指定) |
index | − | ○ | × |
idxwork | − | ○ | × |
sort | − | ○ | × |
lobdata | − | × | × |
lobcolumn | − | × | × |
lobmid | − | × | × |
srcuoc | − | ◎ | × |
array | − | ○ | ○ |
extdat | − | × | ○ |
src_work | − | × | ◎ |
option | spacelvl | ○ | ○ |
tblfree | ○ | × | |
idxfree | ○ | × | |
job | × | × | |
cutdtmsg | × | × | |
nowait | ○ | × | |
bloblimit | × | × | |
exectime | ○ | ○ | |
null_string | × | × | |
divermsg | × | × | |
dataerr | × | × | |
lengover | × | ○ | |
report | − | ○ | × |
pdsetupコマンドで文字コードとしてutf-8を選択した場合,pdloadの入力ファイルには,BOMを持つファイルを使用できることがあります。pdloadでのBOMを持つファイルの使用可否を表5-57に示します。なお,pdloadの入力ファイルとしてBOMを持つファイルを使用しても,BOMは読み飛ばされます。また,pdloadで出力されるファイルにはBOMは付きません。
表5-57 pdloadでのBOMを持つファイルの使用可否(UTF-8の場合)
オプション又は制御文 | 入力ファイル | BOMを持つファイルの使用 | |
---|---|---|---|
-c | 列構成情報ファイル | ○ | |
-v | ナル値情報ファイル | ○ | |
− | 制御情報ファイル | ○ | |
emtdef | MT属性定義ファイル | × | |
source | 入力データファイル | DAT | ○ |
拡張DAT | ○ | ||
バイナリ | × | ||
固定長 | × | ||
pdrorg -W生成 | × | ||
EasyMT情報ファイル | × | ||
index | インデクス情報ファイル | × | |
lobdata | LOB入力ファイル | × | |
lobcolumn | 列単位LOB入力ファイル | × | |
lobmid | LOB中間ファイル | × | |
− | SQL定義ファイル | × |
pdload実行時,制御情報ファイルでファイル出力先を指定しない場合,次の表に示すディレクトリにファイルを出力します。
なお,SQL定義ファイルは制御情報ファイルで出力先を指定できません。SQL定義ファイルの出力先は,次の表に示す,制御文の指定をしない場合と同様です。
表5-58 pdloadがファイルを出力するディレクトリ
制御文※1の指定 | システム定義のpd_tmp_directoryオペランドの指定 | ||
---|---|---|---|
あり | なし | ||
環境変数TMPDIR※2の指定 | |||
あり | なし | ||
あり | 制御文に指定したディレクトリ又はファイル | ||
なし | pd_tmp_directoryに指定したディレクトリ | TMPDIRに指定したディレクトリ | /tmpディレクトリ |
All Rights Reserved. Copyright (C) 2006, 2016, Hitachi, Ltd.