スケーラブルデータベースサーバ HiRDB Version 8 コマンドリファレンス(UNIX(R)用)
再編成する表,インデクス,及びLOB列が格納されているRDエリアのオープン属性,RDエリアの状態によって,pdrorgの実行可否が変わります。pdrorgの実行可否については,「付録C コマンド実行時のRDエリアの状態」を参照してください。
また,ディクショナリ表を再編成する場合は,ディクショナリ表が格納されているRDエリアを,pdholdコマンドで閉塞状態にしてください。
pdrorgの最大同時実行数は,システム共通定義のpd_utl_exec_modeオペランドの指定値によって異なります。
なお,pdreclaim及びpdpgbfonは内部でpdrorgを呼び出しているため,pdreclaim及びpdpgbfon実行中はpdrorgの最大同時実行数は少なくなります。例えば,pd_utl_exec_mode=0の場合,pdrorgの最大同時実行数は32ですが,pdreclaimが10個起動中のときは,pdrorgの最大同時実行数は22となります。
リロード処理の前に分割キーのレンジを変更したとき,再定義したレンジの範囲にアンロードしたデータが納まらない場合,リロード中にそのデータを見付けた時点でエラーとなり,処理を終了します。この場合,アンロードしたデータがすべて納まるように,分割キーのレンジを定義し直し,再度リロード処理をしてください。
データ連動の対象となる抽出側データべースに対してpdrorgを実行する場合,-lオプションにはn又はpを指定してください(ログレスモード又は更新前ログ取得モードで実行してください)。ログ取得モードで実行した場合,抽出側データべースに対して実行された一部の更新情報だけが反映側データべースに転送されるため,抽出側と反映側のデータべースの内容が不整合になります。
pdrorgでは,DECIMAL型の符号正規化機能の使用有無に関係なく,DECIMAL型の符号部の正規化はしません。したがって,DECIMAL型の符号正規化機能を使用しないHiRDBシステムで作成したアンロードデータファイルを使用して,DECIMAL型の符号正規化機能を使用するHiRDBシステムへのリロードはできません。
データベース中の正規化されていないDECIMAL型の符号部を正規化する場合は,-Wオプション指定のアンロードデータファイルを作成し,データベース作成ユティリティでデータを格納し直してください。DECIMAL型の符号正規化機能については,マニュアル「HiRDB Version 8 システム運用ガイド」を参照してください。
インデクス作成時,制御情報ファイルでファイルの出力先を指定しない場合,次の表に示すディレクトリにファイルを出力します。
表8-40 pdrorgがファイルを出力するディレクトリ
制御文※1の指定 | システム定義のpd_tmp_directoryオペランドの指定 | ||
---|---|---|---|
あり | なし | ||
環境変数TMPDIR※2の指定 | |||
あり | なし | ||
あり | 制御文に指定したディレクトリ又はファイル | ||
なし | pd_tmp_directoryに指定したディレクトリ | TMPDIRに指定したディレクトリ | /tmpディレクトリ |
pdrorgの処理内容と制御文の指定によって,インデクス情報ファイルの出力先が変わります。インデクス情報ファイルの出力先を次の表に示します。
表8-41 インデクス情報ファイルの出力先
pdrorgの処理内容 | 制御文 | インデクス情報ファイルの出力先 | ||
---|---|---|---|---|
index文 | idxname文 | idxwork文 | ||
-k rorg, -k reld, -k ixmk |
あり※ | × | − | index文で指定したインデクス情報ファイル |
なし | × | あり | idxwork文で指定したディレクトリ | |
なし | × | なし | 表8-40参照 | |
-k ixrc, -k ixor |
× | あり | あり | idxwork文で指定したディレクトリ |
× | あり | なし | 表8-40参照 | |
あり | × | − | index文で指定したインデクス情報ファイル |
リバランス表にRDエリアを追加した場合,そのリバランス表に対してpdrbalを実行(リターンコード=0)していないと,追加したRDエリアの再編成(RDエリア単位の再編成)はできません。
リバランス表にRDエリアを追加した場合,追加したRDエリアに対するpdrorgの実行可否を次の表に示します。
表8-42 リバランス表に追加したRDエリアに対するpdrorgの実行可否
-kオプション | 表の状態 | |||||
---|---|---|---|---|---|---|
RDエリアの追加〜pdrbal実行前 | pdrbal途中※ (リターンコード4) |
pdrbal完了後 (リターンコード0) |
||||
既存 | 追加 | 既存 | 追加 | |||
unld | ○ | × | ○ | ○ | ○ | |
rorg,reld | 表単位 | ○ | × | ○※ | ○※ | ○ |
RDエリア単位 | ○ | × | × | × | ○ | |
ixmk | ○ | ○ | ○ | ○ | ○ | |
ixrc | ○ | ○ | ○ | ○ | ○ | |
ixor | ○ | ○ | ○ | ○ | ○ |
表をアンロードした後に,その表にRDエリアを追加し,リロードする場合の手順を次に示します。
上記の手順を実行する場合,pdrorgには必ず-gオプションを指定してください。-gオプションを指定しないとエラーとなります。また,LOB列又はLOB属性の抽象データ型列があるリバランス表の場合は,同時に-jオプションも指定してください。
更新凍結状態のRDエリアにある表に対して,-k rorg(再編成)又はreld(リロード)を実行する場合,ユーザLOB用RDエリアの管理領域を更新できないため,エラーとなります。また,LOB列構成基表だけを再編成又はリロードする場合も,同様にエラーとなります。
外部表に対してpdrorgを実行した場合,pdrorgはエラー終了します。
SEGMENT REUSE指定の表にリロードする場合,SEGMENT REUSEの指定は無効となります。
リバランス機能を持つハッシュ関数でFIXハッシュ分割した表を再編成する場合に,アンロードとリロードの間に分割条件を変更すると,表格納RDエリアに空きページがあっても,空きセグメントがないためにRDエリアの容量が不足することがあります。これは,格納条件の変更によって,アンロードした時に格納されていたセグメントとは別のセグメントにリロードする必要が生じたけれど,新たなセグメントを確保できないためです。この場合,リロードの再実行前にRDエリアの拡張をしてください。
32bit版,又は64bit版のHiRDBでアンロードしたアンロードデータファイルは,お互いのbitモードのHiRDBでリロードし,データを移行できます。移行できる条件は,同一のbitモードのHiRDB間で移行できる条件と同じです。
列のデータ型がCHAR型,かつ文字集合UTF-16を指定した列を,キーレンジ分割,又はマトリクス分割(境界値指定のキーレンジ分割)の分割キー指定し,分割キーの長さが列の定義長を超える表はエクスポートできません。
pdrorgのリターンコードを次に示します。
0:正常終了。
4:正常終了(処理を一部スキップしました)。
8:異常終了。
再編成処理(pdrorg -k rorg)の実行中は,一つの処理が完了するまでトランザクションが決着しないため,シンクポイントを取得できません。一つの処理とは,アンロード処理,リロード処理,及びインデクス作成処理のことをいいます。
このため,pdrorgコマンドとともにほかのUAPなどを実行した場合に,システム障害が発生したとき,再開始に要する時間が長くなるため,できるだけpdrorgコマンドとほかのUAPなどは同時に実行しないようにしてください。
同期点指定の再編成,及び同期点指定のリロードの場合,任意の行数単位にシンクポイントを取得できます。このため,通常のシンクポイントを取得しない再編成及びリロードに比べると,異常終了時の再開始に要する時間は短くなります。
なお,アンロード処理だけ(pdrorg -k unld)の場合はデータベースを更新しないため,pdrorgコマンドの実行中でもシンクポイントが取得できます。
pdrorg実行中に処理を中断したい場合は,pdcancelコマンドを使用します。なお,pdrorgが無応答障害(定例ジョブなど,一定時間で再編成処理が終わるはずなのに終わらない)と判断して強制終了させる場合は,pdlsコマンド(-d rpc -a指定)の表示結果をリダイレクトでファイルに取得した後,pdcancel -dコマンドを実行してください。
この場合,処理はロールバックされます。このときのデータベースの状態,及び回復方法については,「8.13 エラー時のデータベースの状態とその回復方法」を参照してください。
再編成時期予測機能を使用している場合,pdrorgをkillコマンドなどのシグナル割り込みで強制終了すると,運用履歴表が更新できません。再編成時期予測機能を使用している場合にpdrorgを終了させるときは,必ずpdcancelコマンドを使用してください。
表をアンロードしてからリロードするまでの間に,次の定義系SQLは実行しないでください。
ただし,分割キーの分割条件を変更する場合及びハッシュ関数を変更する場合は実行できます。
pdrorgの結果は,データベース状態解析ユティリティで確認できます。
リロード時に分割キーの分割条件を変更する場合,次の指定をするとエラーとなります。
マルチボリュームMTを使用する場合,ボリュームの切り替え操作にMTguideを使用しますので,サーバマシンにMTguideが組み込まれている必要があります。
データベース構成変更ユティリティでRDエリアを再初期化した場合,再初期化対象のRDエリアに関連するインデクスが未完状態となることがあります。再初期化によって非分割キーインデクスが未完状態となった場合は,必ずインデクス一括作成モードで表単位に再編成してください。RDエリアの再初期化前に出力されたインデクスファイルでインデクスを一括作成すると,データベースが破壊されることがあります。
系切り替え機能を利用する場合,-k rorgで再編成するのではなく,-k unldと-k reldに分けて再編成することをお勧めします。この場合,アンロード処理が完了したアンロードデータファイルを使用して,系切り替え先でリロードが続行できます。このとき,アンロードデータファイルはDATなどの磁気テープ装置,又はキャラクタ型スペシャルファイルで作成したHiRDBファイルを使用してください。ブロック入出力をする通常ファイルでアンロードデータファイルを作成すると,系切り替えでOSのバッファが破棄されるため,アンロード処理がリターンコード0で終了していても,アンロードデータファイルに出力されている内容は保証されません。
アンロードデータファイル作成時,pdrorgが異常終了した場合,不正なファイルが残っていることがあります。このとき,pdrorgを再実行すれば,残っているファイルに上書きされます。そのため,再実行しない場合はそのファイルを削除してください。ファイルが通常ファイルの場合は,OSのrmコマンドで削除してください。HiRDBファイルの場合は,pdfrmコマンドで削除してください。
表の再編成中,リロード処理でpdrorgが異常終了した場合,ロールバックされてデータベース中のデータが消失した状態になります。これを回復する場合は,アンロード処理で作成されたアンロードデータファイルを使用して,リロード処理だけを実行します。このとき,複数の表を一つのアンロードデータファイルに連続して出力するような実行方法にすると,異常終了したpdrorgの後に続く別の表のアンロード処理でアンロードデータファイルが上書きされ,アンロードデータファイル中にもデータベース中にもデータがない状態になります。そのため,バックアップからの回復ができない場合は,必ず表ごとに別々のアンロードデータファイルを指定してください。
システム間のアンロード,及びリロードをする場合の注意事項を次に示します。
分割キーのレンジを変更した場合,又はハッシュ関数を変更した場合は,次に示すときだけ変更した分割条件に対応して,RDエリアにデータを振り分けて格納します。ただし,分割キーの列を変更した場合,及びLOB列がある表で-jオプションを指定していない場合を除きます。
また,キーレンジ分割,フレキシブルハッシュ分割,又はFIXハッシュ分割をそれぞれ別の分割方法に変更する手順については,マニュアル「HiRDB Version 8 システム運用ガイド」を参照してください。
表定義が同じ場合,HiRDB/シングルサーバの表をアンロードしてHiRDB/パラレルサーバの表へリロード,又はその逆にHiRDB/パラレルサーバの表をアンロードしてHiRDB/シングルサーバの表へリロードできます。ただし,LOB列がある表の場合は,-jオプションを指定してアンロード・リロードする必要があります。
HiRDB/パラレルサーバの表をアンロードしてHiRDB/シングルサーバにリロードする場合,複数サーバに分割格納された表をアンロードするときには-gオプションを指定して1個のアンロードデータファイルを作成する必要があります。
表定義が異なる場合や,サーバ単位に出力されるアンロードデータファイルを使用したい場合は,-Wオプション指定のアンロードをして,pdloadでデータロードしてください。ただし,LOB列は,-W binを指定していても-jオプションを指定していないと,すべてナル値になります。LOB列を移行する場合は,-W binと-jの両方のオプションを指定してください。また,横分割表にクラスタキーインデクスを定義している場合,アンロードデータファイル中のデータはRDエリア単位にはクラスタキー順に並んでいますが,表全体としてはクラスタキー順に並んでいない状態となります。この場合,クラスタリング順序エラーとして扱われます。したがって,pdloadで-xオプションを指定するか,又はRDエリア単位に処理をする必要があります。
ラージファイルを利用すると,1ファイル2ギガバイトを超えるファイルを使用できます。pdrorgで使用するファイルのラージファイル利用可否を表8-43に示します。なお,プロセスが生成できるファイルサイズの上限は,OSの設定値が有効となります。
HiRDB管理者及びルートユーザでのシステム資源の制限値は,生成するファイルサイズより大きな値,又は無制限にしてください。特に,AIXはデフォルトのファイルサイズが1ギガバイトのため,注意が必要です。システム資源の制限値は,OSのlimitコマンド又はulimitコマンドで確認できます。AIXでファイルサイズ制限を変更する場合,/etc/security/limitsファイルの修正も必要です。詳細については,各OSのマニュアル,及びシェルのマニュアルを参照してください。なお,HiRDBはOSのinitから起動されるプロセスのため,ルートユーザが変更した値を有効にするにはOSの再起動が必要です。
表8-43 pdrorgで使用するファイルのラージファイル利用可否
ファイル種別 | ラージファイルの利用可否 |
---|---|
アンロードデータファイル | ○ |
LOBデータのアンロードファイル | ○ |
インデクス情報ファイル | ○ |
ソート用ワークファイル | ○ |
MT属性定義ファイル | × |
処理結果ファイル | ○ |
プラグインインデクスに対するインデクスの一括作成及びインデクスの再作成の実行可否を次に示します。
提供機能 | インデクスの一括作成 | インデクスの再作成 |
---|---|---|
プラグインインデクス遅延一括作成機能 | 実行できます | 実行できます |
プラグインインデクス一括作成部分回復機能 | 実行できます | 実行できます |
上記機能なし | 実行できません | 実行できます |
プラグインインデクスに対してインデクスの一括作成(-k ixmk指定)を実行する場合は,プラグインが「インデクス一括作成部分回復機能」を提供している必要があります。提供していない場合は実行できないため,インデクスの再作成(-k ixrc指定)でインデクスを作り直す運用となります。
「プラグインインデクス遅延一括作成機能」を使用して作成されたインデクス情報ファイルを指定してのインデクス一括作成を実行して正常終了した場合,指定したインデクス情報ファイルを削除します。また,この機能で使用するインデクス情報ファイル出力ディレクトリ(サーバ定義のpd_plugin_ixmk_dir指定ディレクトリ)は,インデクス一括作成(-k ixmk指定)処理以外ではpdrorgが使用するファイル入出力領域として使用しないでください。
HiRDB Text Search Plug-inの差分インデクス機能を使用している場合,pdrorgが更新するインデクスを次に示します。
インデクス作成方法 | 環境変数PDPLUGINNSUBの指定 | ||
---|---|---|---|
Y | N | 設定なし | |
インデクス再作成の場合(-k ixrc指定) | M | M | M |
全インデクスを作成する場合(-k ixmk指定) | M | M | M |
追加データのインデクスを作成する場合(-k ixmk指定) | S | M | S |
再編成,又はリロード対象の表を基にリストを作成している場合,再編成後,又はリロード後にリストを使用して検索したときには,次のような現象が発生します。
このような場合,リストを使用して検索する前に,リストを再作成する必要があります。
pdrorg実行中には,次に示すサーバ当たりの排他資源が必要となります。
X=2×(a+b+c+1)+(b×d)
Y=e+f+g
pdrorgのアンロードデータファイルとして,DVD-RAM装置を利用できます。ただし,使用するOSで各装置が使用できる場合に限ります。
通常ファイルとして使用する場合,磁気ディスクなどのデバイスと同様に,媒体上にファイルシステムを作成して使用できます。
HiRDBファイルとして使用する場合,HiRDBファイルシステム領域作成時(pdfmkfsコマンド実行時)にセクタ長を指定する必要があります。
pdrorg実行時に使用できるファイルの媒体を次に示します。なお,通常ファイルを使用する場合,ファイルのオープン処理に伴い,OSのオペレーティングシステムパラメタ(カーネルパラメタ)のmaxfiles,nfile,及びnflocksを消費します。
ファイル | 通常ファイル | HiRDBファイル | 固定長ブロックテープ | 可変長ブロックテープ |
---|---|---|---|---|
アンロードデータファイル | ○ | ○ | ○ | ○ |
LOBデータのアンロードファイル | ○ | ○ | ○ | ○ |
インデクス情報ファイル | ○ | △ | × | × |
ソート用ワークファイル | ○ | × | × | × |
処理結果ファイル | ○ | × | × | × |
pdrorgは,標準出力に経過メッセージを出力しながら処理をします。また,エラー発生時は,標準エラー出力にエラーメッセージを出力します。標準出力や標準エラー出力への出力が抑止されている環境でpdrorgを実行した場合,メッセージ出力待ちでpdrorgが無応答状態となったり,メッセージログファイルにKFPL20003-Eメッセージを出力してpdrorgが異常終了したりすることがあります。そのため,標準出力や標準エラー出力への出力ができない環境ではpdrorgを実行しないでください。なお,標準出力,及び標準エラー出力に出力するメッセージの順序や数は,メッセージログファイルやsyslogfileと一致しないことがあります。正確にメッセージを把握したい場合は,メッセージログファイル又はsyslogfileを参照してください。
共用表を再編成する場合,共用表,及び処理対象の表に定義した共用インデクスを格納しているRDエリアに対して,EXモードで排他を掛けます。そのため,該当するRDエリアに定義したほかの表やインデクスも参照,及び更新ができません。共用表を再編成する場合の排他制御モードについては,「付録B.2 ユティリティの排他制御モード」を参照してください。
参照制約又は検査制約を定義した表に対して,再編成又はリロードを実行する場合の検査保留状態の設定可否については,「8.9.15 constraint文(検査保留状態に関する記述)」を参照してください。また,検査保留状態については,マニュアル「HiRDB Version 8 システム導入・設計ガイド」を参照してください。
なお,次の条件をすべて満たす場合は,検査保留状態となった表の再編成(-k rorg)は実行できません。
表が検査保留状態かどうかは,ディクショナリ表(SQL_TABLES表)のCHECK_PEND列,又はCHECK_PEND2列の値から判断します(列値が'C'の場合は検査保留状態)。
表やインデクスを再編成した運用履歴は,再編成時期予測結果に反映されます。
また,pdrorgが異常終了した状態のまま,pddbstの状態解析結果蓄積機能を実行すると,再編成完了後の状態で再編成時期を予測できないため,予測結果が不正※となります。したがって,pdrorgが異常終了した場合は,pdrorgを再実行して正常終了させた状態で,pddbstの状態解析結果蓄積機能を実行してください。
BLOB列を含む表の再編成をする場合,データをアンロードしてからリロードするまでの間に,RDエリアの名称を変更しないでください。RDエリアの名称を変更する前に取得したアンロードデータファイルを,名称を変更したRDエリアの表にリロードするとエラーとなります。
pdsetupコマンドで文字コードとしてutf-8を選択した場合,pdrorgの入力ファイルには,BOMを持つファイルを使用できることがあります。pdrorgでのBOMを持つファイルの使用可否を次の表に示します。なお,pdrorgの入力ファイルとしてBOMを持つファイルを使用しても,BOMは読み飛ばされます。また,pdrorgで出力されるファイルにはBOMは付きません。
表8-44 pdrorgでのBOMを持つファイルの使用可否(UTF-8の場合)
制御文 | 入力ファイル | BOMを持つファイルの使用 |
---|---|---|
− | 制御情報ファイル | ○ |
emtdef | MT属性定義ファイル | × |
unload | アンロードデータファイル | × |
EasyMT情報ファイル | × | |
index | インデクス情報ファイル | × |
lobunld | LOBデータのアンロードファイル | × |
EasyMT情報ファイル | × |
All Rights Reserved. Copyright (C) 2006, 2016, Hitachi, Ltd.