5.9.3 オペランドの説明
-
… qufile008="反映情報キューファイル名"
〜〈1〜64バイトの〔パス名/〕ファイル名〉
qufilexxxには,反映情報キューファイルの名称を,絶対パス名又は相対パス名で指定します。相対パス名で指定した場合は,$HDSPATH/相対パス名が絶対パス名に仮定されます。この場合,仮定された絶対パス名の長さが125バイト以下になるように指定してください。
反映情報キューファイルはファイル単位のスワップ方式で情報が格納されるため,2個以上必要で,8個まで指定できます。最低でもqufile001とqufile002は指定してください。
qufile001〜qufile008に指定する001〜008は,001から昇順に連続して指定してください。昇順に連続して指定していない場合には,正しい順序で指定されている反映情報キューファイルまでを反映の対象にします。
ファイル名は,反映側システムで一意にしてください。
-
〜〈符号なし整数〉((2〜1000000000))(単位:KB)
qufile001〜qufile008オペランドで定義した反映情報キューファイルのサイズを指定します。queuesizeオペランドで指定したファイルサイズは,qufile001〜qufile008オペランドで指定したすべてのファイルの,一つ当たりのサイズになります。
反映情報キューファイルの見積もり式については,「4.7.7 反映側Datareplicatorのリソースの設計」を参照してください。
また,反映情報キューファイルをラージファイルとして運用する場合,2097152(2GB)以上に指定します。ラージファイルとして運用する場合は,OSやDatareplicatorファイルシステム領域を,ラージファイルに対応するように事前に設定しておく必要があります。詳細については,「6.11 ラージファイルの運用」を参照してください。
- 注意
-
既存の反映情報キューファイルのサイズを変更した場合,反映側Datareplicatorを初期化する必要があるため,レプリケーションが完了していることを事前に確認してから,ファイルサイズを変更してください。
-
〜〈1〜64バイトの〔パス名/〕ファイル名〉
反映処理の内容を定義した反映定義ファイルの名称を,絶対パス名又は相対パス名で指定します。相対パス名で指定した場合は,$HDSPATH/相対パス名が絶対パス名に仮定されます。この場合,仮定された絶対パス名の長さが125バイト以下になるように指定してください。
抽出対象表と反映対象表の形式,表名,及び列名がすべて同一の場合には,reffileオペランドを省略できます。ファイル名は,反映側システムで一意にしてください。
-
〜〈1〜64バイトの〔パス名/〕ファイル名〉
障害発生時の回復処理の実行に必要な情報が格納されるステータスファイルの名称を,絶対パス名又は相対パス名で指定します。相対パス名で指定した場合は,$HDSPATH/相対パス名が絶対パス名に仮定されます。この場合,仮定された絶対パス名の長さが125バイト以下になるように指定してください。
ファイル名は,反映側システムで一意にしてください。
なお,ステータスファイルの名称を変更する場合に,変更するステータスファイルと同じ名称のファイルが既に存在しているときは,反映側Datareplicatorをhdsstart -i -fコマンドで初期開始してください。
-
〜〈符号なし整数〉((72〜2000000))(単位:KB)
反映ステータスファイルのサイズを指定します。反映ステータスファイルのサイズについては,「4.7.7 反映側Datareplicatorのリソースの設計」を参照してください。
-
unreffile1="未反映情報ファイル名(プライマリ)"
unreffile2="未反映情報ファイル名(セカンダリ)"
〜〈1〜64バイトの〔パス名/〕ファイル名〉
未反映情報ファイルの名称を,絶対パス名又は相対パス名で指定します。相対パス名で指定した場合は,$HDSPATH/相対パス名が絶対パス名に仮定されます。この場合,仮定された絶対パス名の長さが125バイト以下になるように指定してください。
未反映情報ファイルにはプライマリファイル(unreffile1)とセカンダリファイル(unreffile2)があり,ファイル単位のスワップ方式で情報が蓄積されます。
ファイル名は,反映側システムで一意にしてください。
-
〜〈符号なし整数〉((1〜2097151))《16》(単位:KB)
未反映情報ファイルの上限サイズを指定します。unreffileszオペランドで指定するサイズは,unreffile1とunreffile2の両方に対応します。
未反映情報ファイルのサイズについては,「4.7.7 反映側Datareplicatorのリソースの設計」を参照してください。
-
反映側Datareplicator起動時の反映方式を指定します。
startmodeオペランドの指定は,前回の終了モードが正常終了,イベント終了,又は即時終了の場合にだけ有効です。hdsstop -t forceコマンドによる強制終了や,反映処理のエラーによる終了の場合,終了前の反映方式が引き継がれます。
- trn
-
トランザクション単位反映方式で反映処理を開始します。
- tbl
-
表単位反映方式(表単位分割方式,キーレンジ単位分割方式,ハッシュ分割方式)で反映処理を開始します。tblを選択すると,各表の反映グループごとにトランザクションが発生します。そのため,抽出側では複数の表を一つのトランザクションで更新した場合でも,反映側ではそれぞれ別のトランザクションで更新されることになり同期が保証されません。同期を取る必要がある表は,同一の反映グループに定義してください。
- spd
-
反映側Datareplicatorの起動時に反映処理を停止したまま,受信処理だけを開始します。
-
反映側Datareplicator起動時に,前回終了時の反映処理稼働状態(反映処理が停止状態であるかないか)を引き継ぐかどうかを指定します。
hdsrfctl -m immediateコマンドによって反映処理を停止した場合,又は反映処理停止イベントの検知によって反映処理を停止した場合に,前回終了時の反映処理稼働状態を引き継ぎます。hdsstopコマンドによる終了や,反映処理のエラーによる終了の場合,前回終了時の反映処理稼働状態は引き継ぎません。
- initial
-
前回終了時の反映処理稼働状態を引き継がないで,startmodeオペランドの指定に従って反映処理を起動します。
- continue
-
前回終了時の反映処理稼働状態を引き継いで起動します。
-
反映側Datareplicatorの起動時から停止状態(startmodeオペランドの設定がspdの場合)にある反映処理を開始する時間を,反映側Datareplicatorの起動時を起点とした相対時間で指定します。00:00〜23:59以外の時間を指定すると,オペランドの設定エラーになります。breaktimeオペランドを省略,又は「breaktime=00:00」を指定すると,hdsrfctlコマンドによって反映処理が開始されるまで停止したままになります。
hh 〜 〈符号なし整数〉((00〜23))
- mm 〜 〈符号なし整数〉((00〜59))
-
hh又はmmの値が1けたの場合は,前方に0を指定する必要があります。例えば,1時間1分後に反映処理を開始したい場合は,01:01と指定します。
-
反映側Datareplicatorの起動時から停止状態にある反映処理を開始する場合の反映方式を指定します。breakmodeオペランドは,次の二つの条件が満たされている場合だけ有効です。この場合,breakmodeオペランドを必ず指定してください。
-
startmodeオペランドの設定がspdです。
-
breaktimeオペランドの設定が有効です。
- trn
-
トランザクション単位反映方式で反映処理を開始します。
- tbl
-
表単位反映方式(表単位分割方式,キーレンジ単位分割方式,ハッシュ分割方式)で反映処理を開始します。
-
-
〜〈符号なし整数〉((1〜128))《1》
トランザクション単位反映方式で反映処理を稼働するためのイベントコードを指定します。トランザクション単位反映イベントコードは,抽出側システムと対応付ける必要があります。
-
〜〈符号なし整数〉((1〜128))《2》
表単位反映方式(表単位分割方式,キーレンジ単位分割方式,ハッシュ分割方式)で反映処理を稼働するためのイベントコードを指定します。表単位反映イベントコードは,抽出側システムと対応付ける必要があります。
-
eventretrn=トランザクション単位反映再起動イベントコード
〜〈符号なし整数〉((1〜128))《3》
停止中の反映処理を,トランザクション単位反映方式で再起動するためのイベントコードを指定します。トランザクション単位反映再起動イベントコードは,抽出側システムと対応付ける必要があります。
-
〜〈符号なし整数〉((1〜128))《4》
停止中の反映処理を,表単位反映方式(表単位分割方式,キーレンジ単位分割方式,ハッシュ分割方式)で再開始するためのイベントコードを指定します。表単位反映再起動イベントコードは,抽出側システムと対応付ける必要があります。
-
〜〈符号なし整数〉((1〜128))《5》
反映処理を停止させるためのイベントコードを指定します。反映処理停止イベントコードは,抽出側システムと対応付ける必要があります。
-
eventcntreset=反映処理数リセットイベントコード
〜〈符号なし整数〉((1〜128))
反映処理数をリセットするためのイベントコードを指定します。抽出側Datareplicatorと反映側Datareplicatorでリセットを同期させる場合,送信環境定義のeventcntresetオペランドと同じ値にする必要があります。
なお,このオペランドは反映環境定義の次のオペランドと同じ指定はできません(省略時仮定値を含む)。
-
eventtrnオペランド
-
eventtblオペランド
-
eventspdオペランド
-
eventretrnオペランド
-
eventretblオペランド
-
-
反映定義で定義されていない更新情報について,その更新情報が定義された抽出側システムの抽出定義を反映定義と仮定して,反映処理を実行するかどうかを指定します。defmergeオペランドは,反映定義がある場合に有効になります。
- true
-
抽出定義に対応するすべての表に反映処理を実行します。抽出定義に対応する反映定義がない場合には,抽出定義を反映定義と仮定して反映を実行します。
- false
-
反映定義で定義された表だけに反映処理を実行します。
-
〜〈符号なし整数〉((1〜32767))《100》
反映側Datareplicatorが反映側HiRDBに対してコミットを発行する間隔を,抽出側システムでのトランザクション数で指定します。
次の場合には,cmtintvlオペランドの指定に関係なく,反映側HiRDBに対してコミットが発行されます。
-
イベントを検知した場合
-
反映処理でPURGE TABLEを実行した場合
cmtintvl,trncmtintvl,及びtblcmtintvlオペランドの指定値を大きくすると,HiRDBサーバに対して影響があります。詳細については,「4.7.3(5) 反映処理のCOMMIT発行間隔の設計」を参照してください。
また,cmtintvlオペランドの指定値を大きくすると,反映側Datareplicatorの1トランザクションで実行するSQL件数が増加するため,次に示すHiRDBのリソースが多く消費されます。
-
pd_lck_pool_size
-
pd_max_access_tables
-
pd_log_sdinterval
-
pd_sql_object_cache_size
排他リソースが不足しエラーが発生する場合は,cmtintvlオペランドの指定値を小さくしてください。
-
-
trncmtintvl=トランザクション単位反映方式での反映処理コミット間隔
〜〈符号なし整数〉((1〜32767))《100》
トランザクション単位反映方式で反映処理を実行中に,反映側Datareplicatorが反映側HiRDBに対してコミットを発行する間隔を,抽出側システムでのトランザクション数で指定します。
次の場合にはtrncmtintvlの指定に関係なく,反映側HiRDBに対してコミットが発行されます。
-
イベントを検知した場合
-
反映処理でPURGE TABLEを実行した場合
反映方式がトランザクション単位反映方式の場合,trncmtintvlオペランドの指定値は,cmtintvlオペランドの指定値よりも優先されます。
cmtintvl,trncmtintvl,及びtblcmtintvlオペランドの指定値を大きくすると,HiRDBサーバに対して影響があります。詳細については,「4.7.3(5) 反映処理のCOMMIT発行間隔の設計」を参照してください。
また,trncmtintvlオペランドの指定値を大きくすると,反映側Datareplicatorの1トランザクションで実行するSQL件数が増加するため,次に示すHiRDBのリソースが多く消費されます。
-
pd_lck_pool_size
-
pd_max_access_tables
-
pd_log_sdinterval
-
pd_sql_object_cache_size
排他リソースが不足しエラーが発生する場合は,trncmtintvlオペランドの指定値を小さくしてください。
-
-
tblcmtintvl=表単位反映方式での反映処理コミット間隔
〜〈符号なし整数〉((1〜32767))《100》
表単位反映方式で反映処理を実行中に,反映側Datareplicatorが反映側HiRDBに対してコミットを発行する間隔を,抽出側システムでのトランザクション数で指定します。
次の場合には,tblcmtintvlの指定に関係なく,反映側HiRDBに対してコミットが発行されます。
-
イベントを検知した場合
-
反映処理でPURGE TABLEを実行した場合
反映方式が表単位反映方式の場合,tblcmtintvlオペランドの指定値は,cmtintvlオペランドの指定値よりも優先されます。
cmtintvl,trncmtintvl,及びtblcmtintvlオペランドの指定値を大きくすると,HiRDBサーバに対して影響があります。詳細については,「4.7.3(5) 反映処理のCOMMIT発行間隔の設計」を参照してください。
また,tblcmtintvlオペランドの指定値を大きくすると,反映側Datareplicatorの1トランザクションで実行するSQL件数が増加するため,次に示すHiRDBのリソースが多く消費されます。
-
pd_lck_pool_size
-
pd_max_access_tables
-
pd_log_sdinterval
-
pd_sql_object_cache_size
排他リソースが不足しエラーが発生する場合は,tblcmtintvlオペランドの指定値を小さくしてください。
-
-
反映側Datareplicatorの起動時に,反映対象表が反映側システムにあるかどうかをチェックするために指定します。
反映定義がある場合は,tblcheckオペランドの設定に関係なく,反映定義で指定した反映対象表が,反映側システムにあるかどうかをチェックします。反映定義を省略している場合には,tblcheckオペランドをtrueと指定しているときだけ,抽出側システムから送信された抽出定義に定義されている抽出対象表が,反映側システムにあるかどうかをチェックします。
- true
-
反映対象表が反映側システムにあるかどうかをチェックします。trueを指定すると,反映側Datareplicatorの起動時に反映側HiRDBに負荷が掛かる可能性があります。
- false
-
チェックしません。
-
〜〈符号なし整数〉((1〜2000000))(単位:KB)
- UNIX版Datareplicatorの場合
-
定義情報の解析結果を格納する共有メモリのサイズを指定します。共有メモリのサイズについては,「4.7.7 反映側Datareplicatorのリソースの設計」を参照してください。
- Windows版Datareplicatorの場合
-
定義情報の解析結果を格納するメモリマップトファイルの容量を指定します。メモリマップトファイルの容量については,「4.7.7 反映側Datareplicatorのリソースの設計」を参照してください。
-
ebcdic_type={ eck78|ekk78|eck83|ekk83 }
抽出側システムの文字コード体系がEBCDIK/KEISの場合,又は抽出側DatareplicatorがEBCDIK/KEISに変換して送信する場合に,送信されるデータのEBCDIK/KEISの種別を指定します。
ebcdic_typeオペランドは,送信されたデータの文字コード体系がEBCDIK/KEISの場合だけ有効になります。
- eck78
-
EBCDIC/KEIS78の場合に指定します。
- ekk78
-
EBCDIK/KEIS78の場合に指定します。
- eck83
-
EBCDIC/KEIS83の場合に指定します。
- ekk83
-
EBCDIK/KEIS83の場合に指定します。
-
全角モード中に,二つの連続した半角の空白文字が存在する場合に変換する,空白文字の種別(全角又は半角)を指定します。
shiftspace_cnvオペランドは,送信されたデータの文字コード体系がEBCDIK/KEISの場合だけ有効になります。
- multi
-
二つの連続した半角の空白文字を,一つの全角の空白文字に変換します。
- single
-
二つの連続した半角の空白文字を,二つの連続した半角の空白文字に変換します。
-
定義されていない外字を検出した場合に変換する,空白文字の種別(全角又は半角)を指定します。
- multi
-
定義されていない外字を,一つの全角の空白文字に変換します。
- single
-
定義されていない外字を,二つの連続した半角の空白文字に変換します。
-
ref_data_backspace= suppress|nosuppress
次の条件をすべて満たす場合は,suppressを指定してください。
suppressを指定しないで,抽出側と反映側のシステムの定義長を同じにしている場合には,SQL発行時にエラーとなります。
抽出側DBの文字コード体系と反映側DBの文字コード体系によって,SQL発行時にエラーとなる条件を次に示します。
抽出ロケール
反映ロケール
EBCDIK(C)/KEIS
SJIS
EUC
UTF-8
EBCDIK(C)/KEIS
−
○
×
-
A1かつB2
-
A2かつB1
×
-
A1かつB3
-
A2かつB3
-
A3かつB3
SJIS
−
−
EUC
−
○
−
UTF-8
−
○
○
−
- (凡例)
-
○:SQL発行時にエラーになりません。
×:条件によって,SQL発行時にエラーとなります。
A1:反映側DBのデータに半角カナを含む
A2:反映側DBのデータに外字を含む
A3:反映側DBのデータにASCIIコード以外を含む
B1:反映側DBの列定義長が抽出側の1.5倍(3/2)以下
B2:反映側DBの列定義長が抽出側の2倍(2/1)以下
B3:反映側DBの列定義長が抽出側の3倍(3/1)以下
suppressを指定すると,文字コードの変換後に空白文字の削除処理が実行されるため,CPU処理時間が増加する可能性があります。このため,反映側DBの文字コード体系がEUC及びUTF-8以外の場合は,できるだけnosuppressを指定することを推奨します。すべての空白文字の場合には,1文字分の空白文字と仮定して反映処理を実行します。
- suppress
-
文字列の後ろの空白文字を取り除きます。
- nosuppress
-
文字列の後ろの空白文字を取り除きません。
-
-
skip_sqlcode=SQLCODE〔,SQLCODE〕…
反映処理中にDBの更新でSQLエラーが発生した場合,そのSQLエラーが発生した更新情報をスキップさせる対象のSQLCODEを指定します。
スキップできるのは,次の二つのSQLエラーです。
-
更新実行時(EXECUTE)に発生したSQLエラー
-
INSERT,又はUPDATEの前処理時(PREPARE)に発生したSQLエラー
ただし,バージョン05-00よりも前のDatareplicatorでは,SQLの前処理時(PREPARE)に発生したSQLエラーはスキップできません。
SQLCODEは,最大32個指定できます。
負のSQLCODEを指定するときは,マイナス符号を付けて指定します。ただし,暗黙的にロールバックされるSQLエラーに該当するSQLCODEを指定しても,スキップ指定は無視されて反映処理は停止します。
また,HiRDBの暗黙的なロールバック発生後の反映処理のリトライ中に発生したSQLエラーについては,sqlerr_during_retryオペランドの指定によってスキップ指定が無視されて反映処理が停止することがあります。
このオペランドにはデフォルト値はありません。オペランドを省略すると,SQLエラー発生時にSQLCODEの内容に関係なく,反映処理は停止します。
SQLCODEについては,マニュアル「HiRDB UAP開発ガイド」を参照してください。
-
-
反映処理中に,繰返し列を含む表に対するUPDATEを実行した場合に,SQLWARN7に「W」が設定された(UPDATEのSET句 又はDELETE句で,更新する行に存在しない要素番号を指定した)ときのDatareplicatorの処理を指定します。
- true
-
SQLWARN7をスキップして,処理を続けます。
- false
-
エラーとして反映処理を停止します。
-
sqlerr_during_retry= stop|enable_skip
反映処理中に通信エラー(SQLCODEが-722,又は-723)が発生した場合,その後の反映処理リトライ中にSQLエラーが発生したときに,skip_sqlcodeオペランドの指定値を有効とするかどうかを指定します。
HiRDBが暗黙的なロールバックを行うSQLエラーのうち,通信エラー(SQLCODEが-722,又は-723)が発生した場合,その後の反映処理リトライ中に発生したSQLエラーをスキップすると,抽出側DBと反映側DBの不整合が発生するおそれがあります。これは,HiRDBの暗黙的なロールバック処理と反映処理のリトライが競合するためです。
SQLエラーをスキップさせないために,skip_sqlcodeオペランドを指定する場合は,sqlerr_during_retryオペランドにstopを指定,又は指定を省略してください。これによって,抽出側DBと反映側DBの不整合が発生するおそれがあるときは,スキップ指定が無視されて,反映処理はKFRB03061-Eメッセージを出力して停止します。KFRB03061-Eメッセージを出力して停止したときは,HiRDBの暗黙的なロールバック処理が完了するのを待った後,反映処理を再起動してください。
sqlerr_during_retryの指定と,通信エラー後の反映処理リトライ中に発生したSQLエラーのスキップの関係を次の表に示します。
sqlerr_during_retryの指定
通信エラー後の反映処理リトライ中に発生したSQLエラーのSQLCODE
スキップの有無
stop又は省略
skip_sqlcodeオペランドに指定したSQLCODE
×※
上記以外のSQLCODE
×
enable_skip
skip_sqlcodeオペランドに指定したSQLCODE
○
上記以外のSQLCODE
×
- (凡例)
-
○:スキップされます。
×:スキップされません。
- 注※
-
KFRB03061-Eメッセージを出力します。
- stop
-
skip_sqlcodeの指定を無効とし,反映処理を停止します。
- enable_skip
-
skip_sqlcodeの指定を有効とし,skip_sqlcodeオペランドの指定に従います。
-
sqlerr_skip_info={ output|msgoutput|sqloutput|nooutput }
次に示すオペランドの指定で,スキップ又はエラーを知らせる警告メッセージを出力するかどうか,及びそのSQLエラーを未反映情報を出力するかどうかを指定します。
-
skip_sqlcodeオペランドに指定したSQLCODEの更新情報の反映をスキップ
-
skip_mvcelmwarnオペランドにtrueを指定(SQLWARN7に「W」が設定されたときにスキップして処理を続ける)
このオペランドは,skip_sqlcodeを指定したとき 又はskip_mvcelmwarnオペランドにtrueを指定したときにだけ有効です。
- output
-
警告メッセージと未反映情報の両方を出力します。
- msgoutput
-
警告メッセージだけを出力します。
- sqloutput
-
未反映情報だけを出力します。
- nooutput
-
警告メッセージも未反映情報も出力しません。
-
-
初期化直後の抽出側システムと接続するときに,更新情報の受信シーケンスをチェックするかどうかを指定します。
- check
-
初期化直後の抽出側システムと接続するときに,反映側システムも初期化されているかどうかをチェックします。
- nocheck
-
初期化直後の抽出側システムと接続するときに,無条件に接続を許可します。
-
db_connect_retry_number=DBコネクトリトライ回数
〜〈0〜255〉《0》(単位:回数)
反映側DatareplicatorがターゲットDBにコネクトしようとしてエラーになった場合の,コネクトリトライ回数を指定します。
-
db_connect_retry_interval=DBコネクトリトライ間隔
〜〈0〜3600〉《30》(単位:秒)
反映側DatareplicatorがターゲットDBに対してコネクトリトライする場合のリトライ間隔を,秒単位で指定します。
このオペランドは,db_connect_retry_numberに1以上の値を指定したときにだけ有効です。
-
skip_codecnv_error= true|false
反映処理中に抽出データの文字コード変換でエラーになったときに,反映処理を停止するか,その抽出データを含む更新情報をスキップして反映処理を続けるかどうかを指定します。
- true
-
エラーになったときに,抽出データを含む更新情報をスキップして反映処理を続けます。
- false
-
エラーになったときに,反映処理を停止します。
-
このシステムのデータ連動識別子ごとに取得する稼働トレースの取得範囲を指定します。
このオペランドは,反映システム定義のint_trc_lvlオペランドの第2パラメタにncを指定したときだけ有効になります。
-
稼働トレース取得範囲に指定する値
指定する値
取得する情報
MST(制御)
RCV(受信)
RFC(反映)
SQE(SQL実行)
c1
○
○
○
×
c2
○
○
×
○
c3
○
○
×
×
c4
○
×
○
○
c5
○
×
○
×
c6
○
×
×
○
c7
○
×
×
×
稼働トレース取得範囲を省略
○
×
×
×
- (凡例)
-
○:採取します。
×:採取しません。
-
-
device01=Datareplicatorファイルシステム領域名〔〔,割り当てファイル種別〕…〕
〜〈1〜125バイトの絶対パス名〉
device02=Datareplicatorファイルシステム領域名〔〔,割り当てファイル種別〕…〕
〜〈1〜125バイトの絶対パス名〉
:
device09=Datareplicatorファイルシステム領域名〔〔,割り当てファイル種別〕…〕
〜〈1〜125バイトの絶対パス名〉
devicexxオペランドには,Datareplicatorファイルシステム領域とその領域に指定した割り当てファイル種別を指定します。2けたの数字部分(xx)は,必ず通し番号にしてください。割り当てファイル種別とファイルの対応を次に示します。
割り当てファイル種別
各オペランドに指定するファイル名
qufilexxx
(xxxは001〜008までの整数)
set qufilexxxで指定した反映情報キューファイル用リンクファイル名
statsfile
set statsfileで指定した反映ステータスファイル用リンクファイル名
割り当てファイル種別を省略すると,該当するdsidのすべてのファイルを割り当て対象にします。
devicexxオペランドでDatareplicatorファイルシステム領域として割り当てたファイルは,自動的にDatareplicatorファイルシステムにリンクするファイルとして作成されます。割り当てファイル種別に対応するファイルの名称は,既にキャラクタ型スペシャルファイルとして割り当てられていないようにしてください。
devicexxオペランドの定義例を次に示します。
- 注意
-
devicexxオペランドを指定してDatareplicatorを運用した後で,devicexxオペランドを定義から省略するときは,次に示す手順で作業を実施してください。
-
Datareplicatorを停止します。
-
devicexxオペランドを反映環境定義から削除します。
-
削除したdevicexxオペランドに指定していたDatareplicatorファイルシステム領域を,hdsfmkfsコマンドで初期化します。
-
Datareplicatorを初期開始します。
上記の手順を踏まないでdevicexxオペランドを定義から削除してDatareplicatorを初期開始すると,実行時にファイル不正でエラーになることがあります。
-
-
データ連動識別子を通常の受信機能で使うか,更新情報入力として使うかを指定します。SAMファイルを使うメインフレーム側DB(PDMII E2,RDB1 E2)とデータ連動する反映側Datareplicatorでは,ujcodekindオペランドにsamを指定します。
- rcv
-
通常のDatareplicatorの受信機能で使います。
- sam
-
更新情報入力として使います。
-
〜〈符号なし整数〉((0〜65535))《180》(単位:秒)
このオペランドの意味については,反映システム定義のdiscintvlオペランドを参照してください。
このオペランドを指定した場合は,反映システム定義のdiscintvlオペランドの指定値よりも優先されます。
このオペランドを省略すると,反映システム定義のdiscintvlオペランドの指定値が有効になります。
反映システム定義のdiscintvlオペランドも省略すると,反映システム定義のdiscintvlオペランドのデフォルト値が仮定されます。
-
ref_wait_interval=反映プロセスの反映情報キューファイル読み込み間隔
〜〈符号なし整数〉((100〜60000))《5000》(単位:ミリ秒)
このオペランドの意味については,反映システム定義のref_wait_intervalオペランドを参照してください。
このオペランドを指定した場合は,反映システム定義のref_wait_intervalオペランドの指定値よりも優先されます。
このオペランドを省略すると,反映システム定義のref_wait_intervalオペランドの指定値が有効になります。
反映システム定義のref_wait_intervalオペランドも省略すると,反映システム定義のref_wait_intervalオペランドのデフォルト値が仮定されます。
-
〜〈符号なし整数〉((0〜300))《30》(単位:秒)
このオペランドの意味については,反映システム定義のcommit_wait_timeオペランドを参照してください。
このオペランドを指定した場合は,反映システム定義のcommit_wait_timeオペランドの指定値よりも優先されます。
このオペランドを省略すると,反映システム定義のcommit_wait_timeオペランドの指定値が有効になります。
反映システム定義のcommit_wait_timeオペランドも省略すると,反映システム定義のcommit_wait_timeオペランドのデフォルト値が仮定されます。
-
mapping_key_check={ not_null_unique|unique|none }
マッピングキー列のユニークチェックを行う場合のユニーク条件を指定します。ここで指定する値は,反映定義のcheck句を省略した場合の規定値になります。反映定義にcheck句を指定した場合,check句の指定が優先されます。ユニークチェックの内容については,「5.10.5 反映表定義」のcheck句を参照してください。
- not_null_unique
-
反映対象表に対して,「表5-20 ユニークチェックの内容」の内容を満たすインデクスが定義されていること,及びそのインデクスの構成列がNOT NULL属性であることを確認します。
- unique
-
反映対象表に対して,「表5-20 ユニークチェックの内容」の内容を満たすインデクスが定義されていることを確認します。NULL値に関するチェックは行わないため,完全なデータの一意性は,抽出側DBを更新するユーザプログラムなどで保証する必要があります。
- none
-
チェックを行いません。データの一意性は,抽出側DBを更新するユーザプログラムなどで保証する必要があります。
- 注
-
反映対象表が反映側システムにあるかどうかをチェックしない場合,このオペランドの指定値に関係なくマッピングキーのチェックは行いません。反映対象表が反映側システムにあるかどうかのチェックに関しては,反映環境定義のtblcheckオペランドの内容に従います。
-
control_trigger= execute|not_execute
反映対象表の,ユーザが設定したトリガを実行するかどうかを指定します。
次のような場合,トリガを実行すると抽出側DBと反映側DBに不整合が発生することがあります。
-
BEFOREトリガでルーチン制御SQLの代入文を使用した場合
-
レプリケーション対象となる反映先の表にAFTERトリガを定義した場合
- execute
-
反映対象となる表のトリガを実行します。
- not_execute
-
反映対象となる表のトリガを実行しません。
トリガが定義されている表のデータ連動については,「3.3.6 トリガが定義されている表のデータ連動」を参照してください。
-
-
control_reference_trigger= execute|not_execute
反映対象表の,HiRDBが設定したトリガを実行するかどうかを指定します。
- execute
-
反映対象となる表のトリガを実行します。
- not_execute
-
反映対象となる表のトリガを実行しません。
参照制約動作にCASCADEを指定した参照表がある場合は,not_executeを指定してください。
トリガが定義されている表のデータ連動については,「3.3.6 トリガが定義されている表のデータ連動」を参照してください。
-
反映対象表に参照制約を定義した表がある場合,参照制約を定義した表を検査保留状態とするかどうかを指定します。このオペランドは,control_reference_triggerオペランドにnot_executeを指定した場合だけ有効です。
- use
-
検査保留状態にします。
- nouse
-
検査保留状態にしません。
-
reflect_delay_limit_time=反映滞留時間しきい値
〜〈符号なし整数〉((0〜86400))《0》(単位:秒)
更新情報がシステムログファイルに格納された時刻と,反映側DBでその更新情報が反映された時刻との差(反映滞留時間)のしきい値を指定します。反映滞留時間が,ここで指定したしきい値よりも大きくなった場合,警告メッセージが出力されます。
反映環境定義の次のオペランドでの指定値も,滞留時間として考慮する必要があります。
-
cmtintvlオペランド
-
trncmtintvlオペランド
-
tblcmtintvlオペランド
-
ref_wait_intervalオペランド
-
commit_wait_timeオペランド
なお,0を指定した場合,反映プロセスでの滞留監視機能は無効になります。
- 注意
-
このオペランドは,レプリケーション対象となる更新量や,送信間隔,反映間隔などを考慮した上で,値を調整してください。初めは,20分(1200秒)を目安に設定することをお勧めします。
- 運用例
-
送信処理を遅らせて開始する場合の運用例を次の図に示します。
図5‒8 送信処理を遅らせて開始する場合の運用例 例では,8時〜17時まで抽出処理だけを実行し,17時以降から送信処理を開始しています。このような運用環境下で反映滞留時間を監視する場合,更新データが反映システムに9時間送信されないで滞留したままとなるため,反映滞留時間しきい値に9時間分を足す必要があります。
-
-
sql_lockerr_retrynum=排他エラー発生時のトランザクションリトライ回数
〜〈符号なし整数〉((0〜255))《3》
次の場合にロールバックしたトランザクションを,リトライする回数を指定します。0を指定した場合,リトライしません。
-
反映処理が排他エラーとなった場合
-
デッドロックが発生した場合
-
通信障害が発生した場合
HiRDBのシステム共通定義のpd_lck_wait_timeoutオペランドで指定するHiRDBの排他待ち時間があるため,Datareplicator内でのリトライ間隔はありません。このオペランドの指定値は,1回の反映側トランザクションについての再試行回数であるため,反映側トランザクションがコミットを発行した場合はリセットされます。
次に,このオペランドに10を指定した場合について説明します。
-
あるトランザクションで排他エラーが4回発生すれば,4回リトライします。
-
次のトランザクションは6回リトライをするのではなく,先のトランザクション分についてはリセットします。したがって,毎回,リトライが成功するまで,最大10回リトライします。
-
最初の排他エラーはリトライ回数に含まれません。したがって,10を指定した場合,11回分排他エラーにならなければ,リトライ回数はオーバーしません。
次に,リトライする場合を対象DBMSごとに示します。
反映対象DBMS
リトライする場合
リトライ対象
HiRDB
エラー時のSQLCODEが次の場合
-770(排他タイムアウトエラー)
-911(デッドロックエラー)
-722(通信エラー)
-723(通信エラー)
エラーとなった更新処理を含むトランザクション
Oracle(Windows版)
SQL Server
ODBC関数の戻り値が40001(デッドロックエラー)の場合
エラーとなった更新処理を含むトランザクション
Oracle(Windows版以外)
OCI関数の戻り値が60(デッドロックエラー)の場合
エラーとなった更新処理
-
-
xa_recovery_retry_count=トランザクション回復要求のリトライ回数
〜〈符号なし整数〉((0〜1024))《180》
HiRDBにトランザクションの回復を要求した場合に,HiRDBが開始していなかったり,HiRDBの受付プロセスの負荷が大きかったりすると,トランザクションを回復できないことがあります。このオペランドには,トランザクションを回復できなかったときに,再度トランザクションの回復を要求する回数を指定します。
このオペランドは,反映システム定義のcommitment_methodオペランドにfxa_sqleを指定した場合に有効になります。
Datareplicatorの反映グループのSQLプロセス数(HiRDBに対して同時に回復を要求するSQLプロセス数の最大値)を目安に指定してください。なお,0を指定した場合は,トランザクションの回復の再要求をしません。
-
xa_recovery_retry_interval=トランザクション回復要求のリトライ間隔
〜〈符号なし整数〉((1〜180000))《1000》(単位:ミリ秒)
HiRDBにトランザクションの回復を要求した場合に,HiRDBが開始していなかったり,HiRDBの受付プロセスの負荷が大きかったりすると,トランザクションを回復できないことがあります。このオペランドには,トランザクションを回復できなかったときに,再度トランザクションの回復を要求する間隔をミリ秒単位で指定します。
このオペランドは,反映システム定義のcommitment_methodオペランドにfxa_sqleを指定した場合に有効になります。
このオペランドの指定値を小さくすると,反映処理の時間を短縮できますが,SQLプロセスのCPU利用率が上がり,システム全体の負荷が高くなるおそれもあります。このため,CPUの性能を考慮した上で値を指定してください。
特に,Datareplicatorの反映グループのSQLプロセス数(HiRDBに対して同時に回復を要求するSQLプロセス数の最大値)が多い場合は,HiRDBのリカバリ処理の負荷が高くなるため,リトライ間隔を長めに指定してください。
-
reflect_trn_max_sqlnum=反映トランザクション内最大更新SQL数
〜〈符号なし整数〉((1〜10000000))
複数の抽出側トランザクションを一つの反映トランザクションとして反映する場合,反映トランザクションの最大更新SQL数を指定します。この値を基準として,一つの反映トランザクションとして扱われる抽出側トランザクション数が決まります。このオペランドを省略した場合,cmtintvlオペランド,trncmtintvlオペランド,又はtblcmtintvlオペランドの指定値に従います。
なお,reflect_trn_max_sqlnumオペランドの指定値を大きくすると,反映側Datareplicatorの1トランザクションで実行するSQL件数が増加するため,次に示すHiRDBのリソースが多く消費されます。
-
pd_lck_pool_size
-
pd_max_access_tables
-
pd_log_sdinterval
-
pd_sql_object_cache_size
排他リソースが不足しエラーが発生する場合は,reflect_trn_max_sqlnumオペランドの指定値を小さくしてください。
一つの反映トランザクションとして扱われる抽出側トランザクション数は,次のように決まります。
反映トランザクションの対象となる更新SQL数
反映トランザクションの内容
reflect_trn_max_sqlnumオペランド指定値以下の場合
cmtintvlオペランド,trncmtintvlオペランド,又はtblcmtintvlオペランドに従い,決定されます。
reflect_trn_max_sqlnumオペランド指定値を超えた場合
更新SQL数の合計値が指定値を超えるまでの抽出側トランザクション群を,一つの反映トランザクションとします。
一つの抽出側トランザクションだけで指定した更新SQL数を超える場合は,そのトランザクションを一つの反映トランザクションとします。
cmtintvl=2,reflect_trn_max_sqlnum=20という条件での例を,次の図に示します。
図5‒9 抽出側トランザクションと反映側トランザクションの関係 -
T1の更新SQL数はreflect_trn_max_sqlnumオペランドの指定値以下であり,cmtintvlオペランドの指定値が2であることから,T2をT1と合わせて一つの反映側トランザクションとして扱えるかどうか判定します。
T1とT2の更新SQL数の合計値はreflect_trn_max_sqlnumオペランドの指定値以下です。したがって,T1とT2を合わせて,一つの反映側トランザクションとすることができます。
-
T3の更新SQL数はreflect_trn_max_sqlnumオペランドの指定値以下であり,cmtintvlオペランドの指定値が2であることから,T4をT3と合わせて一つの反映側トランザクションとして扱えるかどうか判定します。
しかし,T3とT4の更新SQL数の合計値は,reflect_trn_max_sqlnumオペランドの指定値を超えてしまいます。したがって,T3とT4は,別の反映側トランザクションとなります。
-
残ったT5は,そのまま一つの反映側トランザクションとなります。
- 注意
-
reflect_trn_max_sqlnumオペランドの指定値は,反映先DBMSが一つのトランザクション処理に必要なリソースの上限値を目安に設定してください。
-