5.12.1 規則
- 〈この項の構成〉
-
(1) ユティリティの実行について
-
pdloadは,HiRDBが稼働中のときだけ実行できます。
-
pdloadは,シングルサーバ又はシステムマネジャがあるサーバマシンで実行してください。
(2) ユティリティの実行可否について
データロードする表,インデクス,及びLOB列が格納されているRDエリアのオープン属性,RDエリアの状態によって,pdloadの実行可否が変わります。pdloadの実行可否については,「コマンド実行時のRDエリアの状態」を参照してください。
(3) ユティリティの最大同時実行数
pdloadの最大同時実行数は,システム共通定義のpd_utl_exec_modeオペランドの指定値によって異なります。
- pd_utl_exec_mode=0の場合:
-
最大同時実行数は32です。
- pd_utl_exec_mode=1の場合:
-
最大同時実行数はpd_max_usersオペランドの指定値です。
(4) ユティリティで処理中の表,インデクスについて
-
pdloadで作成中の表やインデクスは,ほかのUAPやユティリティからアクセスできません。ただし,option文にnowait=yesを指定した場合,NOWAIT検索はできます。NOWAIT検索とは,排他オプションにNOWAITを指定して検索するSQLのことをいいます。
データロードする表が格納されているRDエリアを,pdholdコマンドで閉塞しておけば,UAPが閉塞エラーとなります。このため,UAPの実行によってユティリティの実行が排他待ちになることや,ユティリティの実行によってUAPの実行が排他待ちになることを防止できます。
-
データロード中の表に対して,定義系SQLは実行しないでください。実行すると,pdloadがアボートコードPu02004で異常終了します。データロード中の定義系SQL実行を防止するためには,データロードする表及びインデクスが格納されているRDエリアを,pdholdコマンドで閉塞状態にしておく必要があります。なお,データロード中に同一RDエリア内の別の表を参照する場合には,pdholdコマンドで参照可能な閉塞状態にしておきます。
-
定義系SQLを実行中のRDエリアにある表やインデクスに対して,pdloadを実行すると,排他待ちとなります。
-
入力データファイルがDAT形式,又は固定長データ形式の場合,表の列にWITH DEFAULTの指定がなく,非ナル値制約の列に対して入力データの指定がないときはエラーとなります。
(5) CREATE TABLE,CREATE INDEXのPCTFREEとの関係
-
データ格納時のページ内空き領域比率,及びセグメント内空きページ比率について
データロードのときのデータは,表定義(CREATE TABLEのPCTFREEオペランド)で指定したページ内空き領域比率,及びセグメント内空きページ比率に従ってデータが格納されます。
インデクスについては,インデクス一括作成モードを指定した場合,又は作成モードで新しくデータを作成した場合には,インデクス定義(CREATE INDEXのPCTFREEオペランド)で指定したページ内空き領域比率に従ってデータが格納されます。
ただし,-yオプションを指定した場合には,表定義時,及びインデクス定義時の空き領域比率に関係なく,使用中ページに空きがあればデータを格納します。また,option文のtblfreeオペランド,及びidxfreeオペランドを指定した場合,表定義時,及びインデクス定義時の空き領域比率を変更してデータを格納できます。
-
空き領域のサーチ
pdload実行時は,常に未使用ページにデータを格納します(未使用ページを確保できなかった場合はエラーとなります)。追加モード(-d指定なし)でデータロードする場合,既存データを格納した使用中ページに空きがあっても利用しません。これは,既存データの使用中ページに空きがあっても,その空きをサーチするために処理時間が掛かってしまうためです(特にデータロードは,まとまったデータの追加をするため,処理時間が大幅に増大する可能性があります)。ただし,-yオプションを指定した場合には,未使用ページを確保できなかったときでもエラーにはなりません(空いている使用中ページにデータを格納します)。
なお,SEGMENT REUSE指定の表にデータロードする場合,SEGMENT REUSEの指定は無効となります。
(6) データロード中のシンクポイントについて
通常のデータロード時はシンクポイントを取得しません。このため,データロード中にほかのUAPなどを実行してシステム障害が発生した場合など,再開始に要する時間が増大するため,できるだけデータロードとほかのUAPなどは同時に実行しないようにしてください。
同期点指定のデータロードの場合は,任意の行数単位にシンクポイントを取得できます。このため,通常のシンクポイントを取得しないデータロードに比べると,異常終了時の再開始に要する時間は短くなります。
(7) 各国文字データのチェックについて
各国文字データとして格納する入力データの値については,データがマルチバイトコードかどうかのチェックはしません。
(8) DECIMAL型の符号正規化機能について
DECIMAL型の符号正規化機能を使用している場合,DECIMAL型の符号部は次のように扱われます。DECIMAL型の符号正規化機能については,マニュアル「HiRDB Version 9 システム運用ガイド」を参照してください。
-
DECIMAL型の符号部の仕様
HiRDBでの,DECIMAL型の符号部の仕様を次に示します。
符号部 |
意味 |
---|---|
X'C' |
正の値を示しています。 |
X'D' |
負の値を示しています。 |
X'F' |
正の値を示しています。 |
-
DECIMAL型の符号部の変換規則
DECIMAL型の符号正規化機能を使用すると,データを挿入したときにDECIMAL型の符号部を次の規則に従って変換します。
-
DECIMAL型の符号部の変換規則(0データ以外の場合)
埋込み変数のデータの符号部
正規化しない場合
正規化する場合
X'A'
エラー
X'C'に変換
X'B'
エラー
X'D'に変換
X'C'
無変換
無変換
X'D'
無変換
無変換
X'E'
エラー
X'C'に変換
X'F'
無変換
X'C'に変換
X'0'〜X'9'
エラー
エラー
-
DECIMAL型の符号部の変換規則(0データの場合)
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がエラーを検知した列までは正規化された値で出力されます。
(9) 抽象データ型がある表へのデータロード
プラグインが提供する抽象データ型列がある表の場合は,コンストラクタ関数を呼び出して,該当する列へ格納する値を生成しデータロードできます。ただし,コンストラクタ関数が共用ライブラリで作成されていない場合はデータロードできません。
ユーザが定義した抽象データ型列がある表の場合は,該当する列へ格納する値の生成ができないため,データロードできません。
抽象データ型列がある表にバイナリ形式の入力データファイルを使ってデータロードする場合は,UOCを利用したデータロードはできません。
(10) リバランス表へのデータロード
リバランス表にRDエリアを追加した場合,そのリバランス表に対してpdrbalを実行(リターンコード=0)していないと,追加したRDエリアへのデータロード(RDエリア単位のデータロード)はできません。
また,フレキシブルハッシュ分割表にデータロードする場合,ハッシュグループを無視して格納するため,pdrbalで再配置するデータがハッシュキー値とリンクしません。
(11) 改竄防止表へのデータロード
改竄防止表にデータロードする場合,次の注意事項があります。
-
-dオプションは指定できません。
-
データロード対象となるRDエリアがデータ未完状態の場合,データロードできません。データ未完状態とは,改竄防止表に対する表の再編成中にエラーなどが発生し,表の再編成処理が完了していない状態のことをいいます。
-
挿入履歴保持列(SYSTEM GENERATED指定の列)には,pdloadの実行を開始した日時(pdloadを実行したホストの日時)が格納されます。
-
挿入履歴保持列に対して入力データを指定しても無視されます。
(12) トリガが定義されている表へのデータロード
pdloadの実行でトリガは動作しません。pdloadを実行する前に,表に定義されているトリガ定義の内容を確認してください。
(13) 一時表へのデータロード
一時表に対して,データロードはできません。一時表を指定して実行すると,pdloadはKFPL15031-Eメッセージを出力して,エラー終了します。