グループ単位のレプリケーションでは、以下の定義文が必要です。
REPLICAGROUP定義文
INTABLE定義文
OUTTABLE定義文
EXTRACT定義文
グループ単位のレプリケーションでのDBサービス定義の方法を、以下の運用例に基づいて説明します。
なお、ここで説明するもの以外にもDBサービス定義の定義項目は存在します。詳細については、“6.34.1 lxgensvコマンド”ならびに“Linkexpress 運用ガイド”を参照してください。
運用資源
運用資源 | 複写元システム | 複写先システム |
---|---|---|
OS | Solaris | Solaris |
コード系 | EUC(S90)系 | EUC(S90)系 |
データベース名 | 受注管理データベース | 受注管理データベース |
スキーマ名 | 受注スキーマ | 受注スキーマ |
表名 | 受注表 | 受注表 |
列名およびデータ型 | [受注表] | [受注表] |
[在庫表] | [在庫表] | |
抽出データの形式 | EUC(S90)コード系 |
|
運用形態
受注管理データベースの以下のデータをグループ単位に受注管理データベースに複写します。
受注表の仙台支店データ
在庫表の全データ
REPLICAGROUP定義文は、レプリケーショングループを定義する定義文です。グループ単位のレプリケーションを行う場合に必要です。
レプリケーション運用例でのREPLICAGROUP定義文の記述例を以下に示します。
詳細は、“6.34.1.3 REPLICAGROUP定義文”を参照してください。
REPLICAGROUP NAME = SENDAI → 1 MEMBER = (OUTORDER,OUTSTOCK) → 2 FILE = /home/work/indata → 3 INCODE = euc-s90 → 4 DATABASE = 受注管理データベース → 5 OUTCODE = euc-s90 → 6
以下にREPLICAGROUP定義文のオペランドについて説明します。各オペランドの番号は、記述例の番号と対応します。
MEMBERオペランド(レプリケーショングループに属するDBサービス定義の識別名)
1つのレプリケーショングループに属するDBサービス定義の識別名(OUTTABLE識別名、メンバDBサービス定義名ともいいます)を指定します。
レプリケーショングループに属するDBサービス定義の識別名(OUTTABLE識別名)を1つ以上記述します。
入力ファイル名を指定します。本指定値は、一括差分複写の場合に有効となります。全複写の場合、INTABLE定義文のFILEオペランドの指定値を使用します。
入力データのコード系を指定します。
注意
INCODEオペランドにunicodeを指定した場合には、IN_UNICODE_TYPEオペランドの指定が必要です。
複写先データベースのデータベース名を指定します。
データベースへ反映するデータのコード系を指定します。
注意
OUTCODEオペランドにunicodeを指定した場合には、OUT_UNICODE_TYPEオペランドの指定が必要です。
グループ単位のレプリケーションの運用例でのINTABLE定義文の記述例を以下に示します。
内容および形式の詳細については、“Linkexpress 運用ガイド”を参照してください。
NTABLE NAME = INORDER → * DATATYPE = (local-member,non-attribute add null field) → 1 ITEM = ((@TRHEADER,char(8) except null field), (@DBOP,sint), (ITEM1,sint), (ITEM2,sint), (ITEM3,sint), (ITEM4,int), (ITEM5,nchar(5))) → 2 FILE = /home/work/order → 3
INTABLE NAME = INSTOCK → * DATATYPE = (local-member,non-attribute add null field) → 1 ITEM = ((@TRHEADER,char(8) except null field), (@DBOP,sint), (ITEM1,sint), (ITEM2,nchar(10)), (ITEM3,int), (ITEM4,int)) → 2 FILE = /home/work/stock → 3
以下にINTABLE定義文のオペランドについて説明します。各オペランドの番号は、記述例の番号と対応します。
なお、*印として表したオペランドは、表単位のレプリケーションの場合と同じです。“2.5.1 表単位のレプリケーションでのDBサービス定義”を参照してください。
グループ単位のレプリケーションの場合は、入力データの種別に“local-member”を指定してください。
抽出される差分データの形式に従ってください。
以下に複写元システムで抽出される差分データのレコード形式とITEMオペランドでの指定形式について説明します。
抽出レコード形式
レコードの形式にはナル表示域あり(抽出定義でNULLIND = YESを指定)と、ナル表示域なし(抽出定義でNULLIND = NOを指定)の2種類があります。
レコードの構成を以下に示します(コード系をEUCまたはシフトJIS(MS)、数値の表現形式を前進法で示します。)。
レコード長(長さ:4バイト、属性:INTEGER)
レコードの先頭から末尾までの長さが設定されます。
有効列数(長さ:2バイト、属性:SMALLINT)
抽出される項目数だけでなく、抽出識別子および差分反映操作も個数に含まれます。コミットレコードの場合は差分反映操作だけの個数が設定されます。
抽出識別子(長さ:2バイト、属性:SMALLINT)
抽出側のレプリケーショングループ内の表に対するユニークなIDが設定されます。全件抽出の場合はつねに0x0000が設定されます。
コミットレコードの場合、本フィールドは存在しません。
差分反映操作のナル表示域(長さ:2バイト、属性:SMALLINT)
つねに0x0000が設定されます。
差分反映操作(長さ:2バイト、属性:SMALLINT)
0x0000:全件抽出
0x0001:追加差分
0x0002:更新差分
0x0003:削除差分
0xffff:抽出件数が0件の全件抽出
0x8000:コミットレコード
ナル表示域 (長さ:2バイト、属性:SMALLINT)
0x0000:ナル値でない
0xffff:ナル値
抽出件数が0件の全件抽出の場合およびコミットレコードの場合、本フィールドは存在しません。
データ項目 (長さ:データ型によって異なります)
各項目のデータがバイナリ形式で抽出されます。
詳細は、“付録B 抽出データ項目の形式”を参照してください。
抽出件数が0件の全件抽出の場合およびコミットレコードの場合、本フィールドは存在しません。
ITEMオペランドでの指定形式
レコード長、有効列数および抽出識別子
レコード長、有効列数および抽出識別子の3つを合わせて、8バイトのナル表示域なしの文字列として、“@TRHEADER,char(8) except null field”と指定します。
DATATYPEオペランドの入力データの形式でナル表示域の有無に“except null field”を指定した場合、“@TRHEADER,char(8)”だけの指定も可能です。
差分反映操作
以下のように指定します。
ナル表示域ありのレコードの場合:“@DBOP,sint add null field”
ナル表示域なしのレコードの場合:“@DBOP,sint except null field”
DATATYPEオペランドの入力データの形式でナル表示域の有無に差分反映操作と同じ値を指定した場合、“@DBOP,sint”だけの指定も可能です。
各データ項目の属性
“付録B 抽出データ項目の形式”を参照してください。
各データ項目のナル表示域の有無
DATATYPEオペランドで入力データの形式を指定した場合はナル表示域の有無をITEMオペランドで指定する必要はありません。
DATATYPEオペランドの入力データの形式を指定していない場合は、以下のように指定します。
ナル表示域ありのレコードの場合:add null field
ナル表示域なしのレコードの場合:except null field
グループ単位のレプリケーションの場合、本オペランドの指定値は全複写時に有効になります。一括差分複写の場合、REPLICAGROUP定義文のFILEオペランドの指定値が使用されます。
グループ単位のレプリケーションの運用例でのOUTTABLE定義文の記述例を以下に示します。
内容および形式の詳細については、“Linkexpress 運用ガイド”を参照してください。
OUTTABLE NAME = OUTORDER → * DATATYPE = (database-member,symfoware/rdb) → 1 EXTRACT = EXTORDER → * SCHEMA = 受注スキーマ → * TABLE = 受注表 → * ITEM = (@TRHEADER,@DBOP,受注番号,製品番号,数量,受注額,支店名) → * LOADMODE = (difference,load) → 2
OUTTABLE NAME = OUTSTOCK → * DATATYPE = (database-member,symfoware/rdb) → 1 EXTRACT = EXTSTOCK → * SCHEMA = 受注スキーマ → * TABLE = 在庫表 → * ITEM = (@TRHEADER,@DBOP,製品番号,製品名,単価,在庫量) → * LOADMODE = (difference,load) → 2
以下にOUTTABLE定義文のオペランドについて説明します。各オペランドの番号は、記述例の番号と対応します。
なお、*印として表したオペランドは、表単位のレプリケーションの場合と同じです。“2.5.1 表単位のレプリケーションでのDBサービス定義”を参照してください。
グループ単位のレプリケーションの運用例でのEXTRACT定義文の記述例を以下に示します。
内容および形式の詳細については、“Linkexpress 運用ガイド”を参照してください。
EXTRACT NAME = EXTORDER INTABLE = INORDER CONVERT = on SELECT = *
EXTRACT NAME = EXTSTOCK INTABLE = INSTOCK CONVERT = on SELECT = *
オペランドについての説明は、表単位のレプリケーションの場合と同じです。“2.5.1 表単位のレプリケーションでのDBサービス定義”を参照してください。