10.3.2 オプション
- 〈この項の構成〉
(1) -k 動作モード
〜≪share≫
pdrbalの動作モードを指定します。
- share
-
pdrbal実行中でも,他ユーザが表を参照,更新できるモード(共有モード)です。
共有モードは,表に対するオンライン業務を停止しないで,pdrbalを実行する場合に適用してください。
- exclusive
-
pdrbal実行中は,他ユーザに表を参照,更新させないモード(占有モード)です。
占有モードは,表に対するオンライン業務を停止して,pdrbalを実行する場合に適用してください。
(2) -t 〔認可識別子.〕表識別子
リバランスユティリティを実行するリバランス表の名称を指定します。
認可識別子を省略した場合,HiRDBに接続したユーザの認可識別子が仮定されます。
<規則>
-
次の表は指定できません。
-
ビュー表
-
リバランス表(HASH関数(HASHA〜HASHF)で分割した表)以外の表
-
-
認可識別子又は表識別子を引用符('')で囲んだ場合は,英大文字と英小文字が区別されます。引用符('')で囲まない場合は,すべて英大文字として扱われます。なお,sh(Bourneシェル),csh(Cシェル),及びksh(Kシェル)の場合は,更にアポストロフィ(’)で囲む必要があります。
-
抽象データ型を含むリバランス表に対するpdrbalの実行可否を次の表に示します。
表10‒4 抽象データ型を含むリバランス表に対するpdrbalの実行可否 抽象データ型の内容
pdrbal実行可否
ユーザが定義した抽象データ型
×
プラグインが提供する抽象データ型
BLOB属性あり
○※
BLOB属性なし
○
- (凡例)
-
○:実行できます。
×:実行できません。
- 注※
-
プラグインによっては,データベース再編成用のコンストラクタ逆生成関数を指定したときだけ実行できます。
(3) -i インデクス作成方法
〜≪c≫
インデクスの作成方法を指定します。
なお,共有モードの場合は指定しても無視されます(sが仮定されます)。
- c
-
インデクス一括作成モードを示します。このモードを指定した場合,行データをリバランスした後,インデクスを一括作成します。
- <適用基準>
-
占有モードでリバランスした行データのインデクスを,インデクス情報ファイル,ソート用ワークファイルを使用して高速に作成したいときに指定してください。なお,execstop文を指定した場合,データ移動後にインデクスの一括作成をするため,移動したデータのインデクスが作成されるまでpdrbalが停止できないことがあります。
- s
-
インデクス更新モードを示します。このモードでは,行データを移動するごとにインデクスを更新します。
- <適用基準>
-
占有モードでリバランスした行データが少ない場合,又はインデクス情報ファイル,ソート用ワークファイルが確保できない場合に指定してください。また,execstop文に指定したpdrbal実行時間でpdrbalを確実に停止させたい場合にも指定してください。
- <注意事項>
-
-
-i cを指定すると,「インデクス数×追加した表格納用RDエリア数」のインデクス情報ファイルを作成します。このファイルは,データ格納時に同時にオープンするため,ファイル数が多いと1プロセスで使用できるファイル数の上限を超えることがあります。ファイル数の上限を超える場合,システム定義のpd_max_open_fdsオペランドの指定値を大きくしてください。ただし,pd_max_open_fdsオペランドの上限値を超える場合は,1サーバ内の表の分割数,定義しているインデクス数を見直すか,又は-i sを指定するかで対処してください。
-
index文,及びidxwork文を省略すると,既定の出力先ディレクトリにインデクス情報ファイルを出力します。pdrbalが異常終了すると,このインデクス情報ファイルが不完全な状態で残ります。このため,pdrbalの異常終了を何度も繰り返すと不完全なインデクス情報ファイルが増加し,ディスク容量などOSの資源を圧迫することになります。したがって,既定の出力先ディレクトリに出力した必要のないインデクス情報ファイルについては削除するようにしてください。
index文を省略してidxwork文だけを指定した場合に,idxwork文に指定したディレクトリ下に出力するインデクス情報ファイルについても同様です。
既定の出力先ディレクトリについては「注意事項」の表「 pdrbalがファイルを出力するディレクトリ」を参照してください。
また,インデクス情報ファイルは,次の名称規則で出力します。
INDEX-インデクス名-インデクス格納用RDエリア名-一意となる文字列
-
(4) -l ログ取得方式
〜《a》
pdrbal実行時の,データベースの更新ログの取得方法を指定します。
なお,占有モードの場合は必ず-lオプションを指定してください。また,共有モードの場合は指定できません(aが仮定されます)。
- a
-
ログ取得モードを示します。ロールバック,及びロールフォワードに必要なデータベースの更新ログを取得します。
- <適用基準>
-
リバランスの行データが少ない場合,又はpdrbalの実行前,実行後にバックアップを取得したくない場合に指定します。
ログ取得モードで実行した場合,pdrbalの実行前,実行後のバックアップは取得する必要はありませんが,ログレスモードと比べて処理性能は劣ります。
- n
-
ログレスモードを示します。データベースの更新ログは取得しません。
- <適用基準>
-
リバランスの行データが大量の場合に指定します。
ログレスモードで実行した場合,ログ取得モードに比べると実行時間は短縮できます。ただし,pdrbal実行中の異常終了に備えて,pdrbalの実行前にバックアップを取得する必要があります。また,データベースの更新ログが取得されていないためpdrbal実行後にもバックアップの取得が必要です。
なお,pdrbalが異常終了した場合,表格納用RDエリアは障害閉塞となるため,pdrbal実行前に取得したバックアップで回復する必要があります。
- <規則>
-
-
以前に取得したバックアップから回復できるときは,pdrbal実行前のバックアップ取得は不要です。
-
ログレスモードでは,データベースの更新ログの代わりに,1サーバ当たり次の量のENQログを出力します。
ENQログ=(p+q+r)×T
p:表格納用RDエリア数
q:LOB列(LOB属性)格納用RDエリア数
r:インデクス格納用RDエリア数
T:トランザクション数(-cオプションの説明を参照してください)
-
ログレスモードの運用方法については,マニュアル「HiRDB システム運用ガイド」を参照してください。
-
execstop文を指定してpdrbalを数回に分けて実行する場合,実行するごとにバックアップを取得する必要があります。
-
ログ同期方式のリアルタイムSANレプリケーションを適用している場合,業務サイトで-l n指定のpdrbalを実行したときは,システムログ適用化を実施してください。システムログ適用化については,マニュアル「HiRDB ディザスタリカバリシステム 構築・運用ガイド」を参照してください。
-
(5) -u 認可識別子
pdrbalを実行するユーザの認可識別子を指定します。
省略した場合の仮定値については,<省略時仮定値>を参照してください。
このオプションを指定した場合,パスワード入力要求の応答付きメッセージが表示されます。パスワードが不要な場合は,応答付きメッセージに対して空送信してください。
ここで指定した認可識別子でHiRDBに接続し,実行権限のチェックをします。
- <適用基準>
-
環境変数PDUSERに設定されている認可識別子ではない,別の認可識別子で実行したい場合に指定します。
- <省略時仮定値>
-
省略した場合,次の方法で認可識別子/パスワードが仮定されます。
-
pdrbal実行時の環境変数PDUSERの設定値が仮定されます。シェルで&を付けてバックグラウンドで実行する場合や,リモートシェル環境で実行する場合など,パスワードの応答ができない環境で実行するときは,PDUSERを必ず設定してください。環境変数PDUSERの指定例を次に示します。
(例)Cシェルの場合
パスワードありの場合 setenv PDUSER '"認可識別子"/"パスワード"'
パスワードなしの場合 setenv PDUSER '"認可識別子"'
-
環境変数PDUSERが設定されていない場合,ログインウィンドウのユーザ名が仮定されます。パスワードについては,入力要求の応答付きメッセージが表示されるので,そこで応答してください。パスワードが不要な場合は,応答付きのメッセージに対して空送信してください。
-
- <規則>
-
-
このオプションは,シェルで&を付けてバックグラウンドで実行する場合や,リモートシェルなどの応答できない環境では指定しないでください。
-
認可識別子を引用符('')で囲んだ場合は,英大文字と英小文字が区別されます。引用符('')で囲まない場合は,すべて英大文字として扱われます。なお,sh(Bourneシェル),csh(Cシェル),及びksh(Kシェル)の場合は,更にアポストロフィ(’)で囲む必要があります。
-
(6) -c コミット単位
〜<符号なし整数>((0〜1000000))
≪共有モードの場合は10,占有モードの場合は100000≫
リバランス処理でデータを再配置するための行データの移動で,何行移動したときにコミットするかを行数で指定します。
0を指定した場合は,1トランザクション当たりの移動行数を制限しません(リバランスが終了するまで,又はexecstop文で指定した時間までを1トランザクションとして移動処理をします)。
HiRDB/パラレルサーバの場合,各RDエリアに格納されている行数によっては,ここで指定したコミット単位より少ない行数でコミットすることがあります。
- <推奨値>
-
共用モードの場合,pdrbalでは行データ移動のときに移動元と移動先のRDエリアに対して排他を掛けます。そのため,該当する移動元,移動先RDエリアに対して,移動が終了するまで(コミットするまで)アクセスできなくなります。したがって,共有モードの場合には,コミット単位に小さい値を指定することでほかからの排他待ち時間を短くできます。
UAPなどの動作を優先したい場合は小さい値を指定し,リバランス処理を優先したい場合は大きな値を指定してください。
占有モードで,かつログレスモードの場合,処理対象となる表にインデクスが定義しているときは,コミット単位に0を指定することで処理性能を向上できます(コミット時のインデクスメンテナンス処理で更新したグローバルバッファのフラッシュ処理が1回になるため,性能向上が期待できます。また,コミット数も削減できます)。ただし,1トランザクションで処理するため,処理行数の増加に伴い,排他資源数が増加します。また,シンクポイントダンプを取得しない期間も長くなります。
- <注意事項>
-
-
オンライン業務でのトランザクション数が比較的多い場合,100以下を指定することをお勧めします。
-
コミット単位に小さい値を指定した場合,リバランス処理の時間は長くなり,また,コミット回数の増加に伴い多量のトランザクションログが出力されます。トランザクションログは,-lオプションの指定値に関係なく必ず出力されるログで,次の計算式から求められます。
トランザクションログ量(単位:バイト)
=(1328+176×3)×T
T:(a÷b+1024÷c)
a:リバランス対象のデータ件数
b:-cオプションの指定値
c:表格納用RDエリアの数
トランザクションログは,コミットするごとに上記の計算式のログを,各サーバのシステムログファイルに出力します。各サーバとは,すべてのフロントエンドサーバ,及び表格納用RDエリアがあるバックエンドサーバのことです。また,抽象データ型がある表の場合は,ディクショナリサーバも含まれます。
-
コミット単位に大きい値を指定した場合,シンクポイントを取得できない期間が長くなり,ほかのUAPと同時実行中に障害が発生したときは,再開始に要する時間が増大します。
-
占有モードで,かつログレスモードの場合,コミット単位に0を指定できます。それ以外の場合は0を指定できません。
-
(7) -n 〔一括入出力用ローカルバッファ面数〕,〔ランダムアクセス用ローカルバッファ面数〕
占有モードでリバランスをする場合,ローカルバッファを使用するときに指定します。このオプションを指定すると,ローカルバッファを使用してDBアクセスができるようになり,一括入出力によって入出力回数を削減できます。
このオプションを省略した場合は,グローバルバッファを使用して1ページ単位に入出力をします。
- 一括入出力用ローカルバッファ面数 〜<符号なし整数>((2〜4096))
-
一括入出力用ローカルバッファの面数を指定します。一括入出力用ローカルバッファは,データページに対して使用します。
一括入出力用ローカルバッファ面数には,16〜32面を指定することをお勧めします。184キロバイト÷ページ長を上限に指定値を決めてください。
- ランダムアクセス用ローカルバッファ面数 〜<符号なし整数>((4〜125000))
-
ランダムアクセス用ローカルバッファの面数を指定します。ランダムアクセス用ローカルバッファは,インデクスページに対して使用します。
一括入出力用ローカルバッファ面数,及びランダムアクセス用ローカルバッファ面数は,表定義によって指定の組み合わせを変更することをお勧めします。推奨する-nオプションの指定を次の表に示します。
表種別 |
列定義 |
-nオプションの指定 |
---|---|---|
FIX表,又は非FIX表 |
すべての列がNULLである |
-n ランダムアクセス用ローカルバッファ面数 |
非FIX表 |
可変長データ型の列が定義されている |
-n ランダムアクセス用ローカルバッファ面数 |
抽象データ型列が定義されている |
||
BINARY列が定義されている |
||
FIX表,又は非FIX表 |
上記以外 |
-n 一括入出力用ローカルバッファ面数 |
- <pdrbalが使用するバッファについて>
-
-nオプションを省略した場合,グローバルバッファを使用します。この場合,リバランス時に大量のグローバルバッファを使用するため,そのグローバルバッファを使用するUAPのトランザクション性能が劣化します。-nオプションを指定すると,このようなバッファ競合はなくなります。pdrbalとバッファの関係を次の図に示します。
図10‒5 pdrbalとバッファの関係 - 〔説明〕
-
グローバルバッファだけを使用する場合(-nオプションを省略した場合),pdrbalとUAPとでバッファの競合が発生します。
ローカルバッファとグローバルバッファを使用する場合(-nオプションを指定した場合),pdrbalとUAPとのバッファの競合は発生しません。ただし,LOB列がある表のリバランスの場合は,-nオプションを指定してもグローバルバッファを使用します。
<規則>
-
このオプションを省略した場合は1を仮定して,グローバルバッファを使用します。したがって,一括入出力はしません。
-
FIXハッシュ分割のリバランス表に対してこのオプションを指定する場合,ハッシュグループごとに指定したページ数のバッファを確保するため,フレキシブルハッシュ分割のリバランス表に比べてメモリ消費量が大きくなります。なお,ハッシュグループとは,分割キーをハッシュした結果を基にHiRDBがデータを1024のグループに分けるときの,このグループのことをいいます。リバランス中は,このグループごとにRDエリアのセグメントを割り当ててデータを格納します。
-
このオプションを省略した場合(グローバルバッファを使用する場合),次の計算式以上のバッファ面数がないと十分な性能は得られません。
1RDエリアに必要なバッファ面数
=1024÷リバランス表が格納されているRDエリア数×2+3
(8) -m 〔経過メッセージ出力間隔〕〔,インフォメーションメッセージ出力抑止レベル〕
- 経過メッセージ出力間隔 〜<符号なし整数>((1〜1000))《10》
-
処理の実行状況を出力するメッセージの出力間隔を,1万行単位で指定します。
実行状況のメッセージはRDエリアごとに出力されます。なお,このメッセージは,-mオプションにlvl2を指定すると,トラブルシュート情報を出力するワークファイルにも出力されます。
- インフォメーションメッセージ出力抑止レベル 〜《lvl0》
-
実行した端末の標準出力,syslogfile,及びメッセージログファイルへのインフォメーションメッセージの出力を抑止します。標準出力,syslogfile,及びメッセージログファイルのすべての出力を抑止する場合,トラブルシュート情報はワークファイルに出力します。指定できるオプションとメッセージの出力先を次の表に示します。
表10‒6 オプションの指定値とメッセージの出力先 オプションの指定値
意味
出力先
標準出力
syslogfile及びメッセージログファイル
ワークファイル
lvl0
出力を抑止しない
○
○
×
lvl1
標準出力への出力を抑止する
×
○
×
lvl2
標準出力,syslogfile及びメッセージログファイルへの出力を抑止する
×
×
○
ワークファイルにメッセージを出力するのはトラブルシュート目的(ユティリティの動作を確認するため)であり,通常,メッセージを確認する必要がない場合はlvl1を指定することをお勧めします。
- <ワークファイル>
-
ワークファイルは,-mオプションにlvl2を指定すると,ユティリティを実行するごとに各サーバに作成されます。このため,pdcspoolコマンドでHiRDBによって定期的に削除されるように,pd_tmp_directoryオペランドにディレクトリを指定しておくことをお勧めします。ワークファイルの出力先を次の表に示します。
表10‒7 ワークファイルの出力先 システム定義のpd_tmp_directoryオペランドの指定
環境変数TMPDIRの指定
ワークファイルの出力先
あり
−
pd_tmp_directoryオペランドに指定したディレクトリ
なし
あり
環境変数TMPDIRに指定したディレクトリ
なし
/tmpディレクトリ
なお,ファイルオープンエラーやI/Oエラーなどのためにインフォメーションメッセージがワークファイルへ出力できない場合は,エラーメッセージが出力されますが,処理は続行します。
ワークファイルは,HiRDBが自動で作成します。ファイル名称は,PDRBAL-aa-bbの形式で決められます。それぞれの意味について説明します。
-
PDRBAL:pdrbalが出力したファイルであることを示す固定のプリフィクスです。
-
aa:プロセスのサーバ名称です。
-
bb:ファイル作成時間,及びプロセスIDです。
-
(9) -W 実行監視時間 〜<符号なし整数>((0〜3600))
リバランスユティリティの実行時間を監視する場合に,その監視時間を分単位で指定します。
このオプションに指定する値の目安や動作については,マニュアル「HiRDB システム定義」のシステム共通定義pd_cmd_exec_timeオペランドの説明を参照してください。
なお,このオプションに0を指定した場合は,監視を行いません。
オプションを省略した場合は, システム共通定義のpd_cmd_exec_timeオペランドの指定値に従います。
(10) 制御情報ファイル名
〜<パス名>
pdrbalの制御文を記述した制御情報ファイルの名称を指定します。
制御情報ファイルに記述できる制御文を次の表に示します。各制御文については,10.3.3〜10.3.10を参照してください。なお,制御情報ファイル中にコメントは記述できません。
制御文(記述する内容) |
動作モード(-kオプション) |
|
---|---|---|
共用モード (share) |
占有モード (exclusive) |
|
index文 (インデクス情報ファイルの情報の記述) |
× |
○ |
idxwork文 (インデクス情報ファイル用ディレクトリの情報の記述) |
× |
○ |
sort文 (ソート用ワークディレクトリの情報の記述) |
× |
○ |
execstop文 (pdrbal実行時間の情報の記述) |
○ |
○ |
unld_func文 (コンストラクタパラメタ逆生成関数の情報の記述) |
○※ |
○※ |
reld_func文 (コンストラクタ関数の情報の記述) |
○※ |
○※ |
report文 (実行結果ファイルの情報の記述) |
○ |
○ |
option文 (オプション機能の記述) |
○ |
○ |
- (凡例)
-
○:任意に指定できます。
×:指定できません。
- 注※
-
プラグインによっては,指定しなければならないものもあります。詳細については,各プラグインマニュアルを参照してください。
制御文で記述するファイル,及びディレクトリの規則を次に示します。
-
HiRDB管理者に対してアクセス権限を与えておく必要があります。