ここでは、Symfoware6000と連携する場合、設計や構築を行う前に必要な調査項目を説明します。
レプリケーションに使用できるSymfoware6000の資源を確認してください。
データファイル
Symfoware6000の資源をレプリケーションで、データファイルとして扱えるかを確認してください。
Symfoware6000の実表、ビュー表および物理ファイルが使用できます。
同期方式や運用形態によって異なります。また、マスタとして使用するか、レプリカとして使用するかによっても異なります。
運用形態 | 同期方式 | マスタ | レプリカ |
---|---|---|---|
配布 | 一括方式 | 実表 | 実表 |
差分方式 | 実表 | 実表 | |
集約 | 一括方式 | 実表 | 実表 |
差分方式 | 実表 | 実表 | |
共用 | 一括方式 | - | - |
差分方式 | 実表 | 実表 |
※)主キーを必要とする同期方式(一括方式の処理モードが追加、更新)の場合は使用できません。
データ型
データファイルに使用できる項目のデータ型を、以下の表を参照し確認してください。
分類 | 物理ファイルの項目属性 | SQL(実表、ビュー表) のデータ型 |
---|---|---|
真数 | 外部10進数字項目 | NUMERIC |
内部10進数字項目 | DECIMAL | |
4バイト2進数字項目 | INTEGER | |
2バイト2進数字項目 | SMALLINT | |
文字列 | 4095文字までの英数字項目 | CHARACTER |
999文字までの日本語項目 | NATIONAL CHARACTER |
概数および日時に相当するSymfoware6000のデータ型はありません。
符号なし4バイト2進数字項目および符号なし2バイト2進数字項目は、他のDBMSの項目と関連づけてレプリケーションの構成定義を作成できますが、注意が必要です。
符号なし4バイト2進数字項目および符号なし2バイト2進数字項目を使用した場合、他のDBMSで関連づけた項目に負の値が含まれていると、同期処理がエラーとなります。差分同期でこのような事象が発生すると、復旧のために一括同期の実行が必要となります。
以下の項目は使用できません。
項目長が4095バイトを超える項目
浮動小数点項目
2進数で、かつ、項目長が8バイトの項目
2進数で、かつ、小数部桁数が0でない項目
初期値に特殊定数を使用している項目
反復数が指定された基本項目※で、項目長×反復数が4095バイトを超える項目
※)ASPのCHGPFコマンドを使用して、繰返し項目を展開することにより使用できます。CHGPFコマンドの詳細は、「ASP システムコマンド集」を参照してください。
データ型の対応
Symfoware6000のデータ型に対応するOracleとSQL Serverのデータ型は、以下の通りです。
Symfoware6000 | Oracle | SQL Server |
---|---|---|
NUMERIC | NUMBER | numeric |
DECIMAL | decimal | |
INTEGER | int | |
SMALLINT | smallint | |
CHARACTER | CHAR | char |
※)差分同期を利用する場合、使用できません。
PowerReplicationは、データ型を変換して異なるDBMS間を連携します。データ型を変換する仕組みは、"2.3.1 DBMSの違いによるデータの扱い"および"付録D データ型対応づけの仕組み"を参照してください。
Symfoware6000では、NUMERIC型、DECIMAL型、またはCHARACTER型の項目を他DBMSの日時型の項目と関連づけできます。
Symfoware6000 | Oracle | SQL Server |
---|---|---|
NUMERIC | DATE | datetime |
CHARACTER |
Symfoware6000のデータファイルで扱うデータは、関連づけたDBMSで扱える日時データの範囲内であることが必要です。
たとえば、SQL Serverのdatetime型と関連づけた場合、日付は西暦1753年1月1日から9999年12月31日までの範囲であることが必要です。
扱える日時データの範囲は、DBMSやデータ型によって異なります。各DBMSのマニュアルを参照し確認してください。
レプリケーションで設定することが必要となる主キーを確認してください。
差分同期を行う場合、マスタとレプリカの両方のデータファイルに主キーを設定することが必要です。
一括同期を行う場合、一括方式の処理モードが「追加」または「更新」のとき、マスタとレプリカの両方のデータファイルに主キーを設定することが必要です。
同期方式 | 処理モード | マスタ/レプリカの主キー |
---|---|---|
一括方式 | 創成 | 不要 |
追加 | 必要 | |
差分方式 | - | 必要 |
レプリケーションの主キーは、NULL値およびデータの重複を許さないインデックスを設定することが必要です。
データファイルのインデックスが複数の項目で構成される場合は、複数の項目を1つのレプリケーションの主キーとして扱います。
物理ファイルと実表で、以下のインデックスをレプリケーションの主キーとして扱うことができます。
物理ファイル
ASPのCRTLFコマンドで作成したデータの重複を許さないインデックス
実表
以下のCREATE TABLE文で作成したインデックス
CREATE TABLE文の<列制約>に"NOT NULL"と"UNIQUE"を指定した列
CREATE TABLE文の<一意性制約定義>に"UNIQUE"または"PRIMARY KEY"を指定し、かつ対象の列すべてに<列制約>"NOT NULL"を指定した列の組合せ
CREATE INDEX文の<一意性制約定義>に"UNIQUE"を指定した実表の列の組(対象列はすべて"NOT NULL"を指定)
主キーを構成する項目数は20個までです。
ASPのCRTLFコマンドの詳細は、「ASP システムコマンド集」を参照してください。
SQL文の詳細は、「ASP SQL説明書」を参照してください。
レプリケーションの主キーとして扱うインデックスを構成する項目は、以下のデータ型に関連づけてください。
Symfoware6000 | Oracle | SQL Server |
---|---|---|
NUMERIC | NUMBER | numeric |
DECIMAL | decimal | |
INTEGER | int | |
SMALLINT | - | smallint |
CHARACTER | CHAR | char |
NUMERIC※ | DATE | datetime |
-:主キーとして扱うSymfoware6000のSMALLINT型は、Oracleと関連づけできません。
※:日時型として扱う場合(ASP側で関連づける項目に日時変換書式を指定した場合)
日時型のデータと関連づけるための条件、関連づけ方法および同期処理によるデータ変換処理の詳細は、「ASP レプリケーションサービス説明書」を参照してください。
データ
同期対象とするデータファイルに格納しているデータを確認してください。
不正データ
同期対象とするSymfoware6000のデータファイルに不正データが含まれていないことを確認してください。
ASPのシステムコマンドやCOBOLプログラムは、データファイルのデータ型に従わないデータ(不正データ)を書き込む場合があります。
不正データを含むSymfoware6000のデータファイルを使用し、同期が実行された場合、PowerReplicationは不正データの補正を行いますが、補正できず、同期処理がエラーになることがあります。
全角文字と半角文字の混在
Symfoware6000と連携する相手サーバのデータベースにおいて、同期対象とするデータファイルで、1つの項目に全角文字と半角文字が混在するデータの長さを確認してください。
Symfoware6000のデータファイルに対して全角文字と半角文字が混在するデータが反映される場合、全角文字の始端と終端に1バイトずつ制御コード(シフトコード)が付け加えられて反映されます。
このため、関連づける項目の長さは、付加される制御コード(シフトコード)を考慮しておく必要があります。
不正コードおよび全角文字と半角文字の混在によって、差分同期がエラーとなった場合、復旧のために一括同期の実行が必要となります。
データファイルに書き込む文字データの文字コード変換方式を確認してください。
WindowsとASP間で連携するレプリケーションの環境では、文字コード変換が行われて反映されます。文字コード変換の環境は、レプリケーションで扱う文字データが正しく変換できるように作成、設定する必要があります。また、外字(利用者定義文字)を含む場合、文字コード変換表をWindowsとASPの両方で一致させる必要があります。
文字コードの環境が正しく作成、設定されていないと、同期の実行によってデータの反映時に代替文字 ‘_’(アンダーバー)に置き換えられます。この場合、ASPのシステムログに警告が通知され、詳細情報が詳細メッセージ情報ファイルに出力されます。
ASP V25以降のシステムと連携する場合、文字コードの変換方式を選択します。
EBCDIC/JEFコードとシフトJISコードの変換
以下の場合に、この変換方式を選択してください。
- 旧レプリケーション製品からのバージョンアップ
- Windows側で既に構築しているシフトJISのデータベースを使用する場合
- 3台以上のサーバで連携し、旧レプリケーション製品との連携が含まれる場合
EBCDIC/JEFコードとUnicodeの変換
以下の場合に、この変換方式を選択してください。ただし、上記の" EBCDIC/JEFコードとシフトJISコードの変換"に示した条件を同時に満たす必要がある場合、EBCDIC/JEFコードとシフトJISコードの変換方式を選択してください。
- ASP V25以降のシステムと新規に連携する場合
- Windows側のアプリケーションがUnicodeの文字データを扱う場合
ASP V24以前のシステムと連携する場合、EBCDIC/JEFコードとシフトJISコードの変換方式となります。EBCDIC/JEFコードとUnicodeの変換方式は採用できません。
レプリケーションで扱う文字データをコード変換する仕組みについては、"2.2.6 文字コード変換"を参照してください。
レプリケーションの同期で、Symfoware6000に反映されるデータ量を見積もってください。
同期対象のデータファイルへの反映は、Symfoware6000のトランザクションが使用されます。
Symfoware6000のデータファイルに対して、レプリケーションサービスが1回のトランザクションで5000件以上のデータを反映する場合、トランザクションの実行環境(バックアウトファイルなど)を作成することが必要です。
レプリケーションサービスがデータを反映するトランザクションの詳細は、"2.3.3 排他制御とトランザクション"を参照してください。
また、差分同期を利用するレプリケーションの環境を構築する場合、ASPの更新情報ファイルが枯渇しないように、ASP側でも更新情報ファイルのサイズを見積もっておくことが必要です。
ASPの更新情報ファイルの見積り方法は、「ASP レプリケーションサービス説明書」を参照してください。
同期対象のデータファイルを操作する利用者プログラムを点検してください。
扱うデータファイル
"扱えるデータを確認する"で調査した結果から、利用者プログラムを点検してください。データファイルを変更または再作成して使用する場合、および不正データを書き込んでいる場合は、利用者プログラムの見直しを行ってください。
データファイルの更新
同期対象のデータファイルの更新方法を確認してください。
差分同期を利用してレプリケーションの環境を構築する場合、以下の方法でデータファイルを更新すると、同期の実行で更新データが正しく反映されず、データベース間で整合性が保てない状態となります。
COBOLプログラムからのOUTPUTモードのオープン
SQL文のDDL文(TRUNCATE TABLE文、DROP TABLE文など)
RSTFILEコマンド
RSTLIBコマンド
SETPFコマンド
CLRFILEコマンド
CNDPFコマンド
RCOVRDMコマンド
INZPFコマンド
IMPPFコマンド
REORGPFコマンド
RPRPFコマンド
RSTXLIBコマンド
SORTコマンド(出力ファイル)
DPS(保存先ファイル)
ファイル転送コマンド(HICS,FTP,EXPRESS)
上記の詳細は、「ASP レプリケーションサービス説明書」を参照してください。
Symfoware6000を使用したレプリケーションの運用を円滑に行うため、PRIMERGY 6000/ASPの運用方法を点検してください。
レプリケーションの環境を構築しているPRIMERGY 6000/ASPでは、以下の場合にデータベース間の整合性が保てない状態になることがあります。
レプリケーションサービスの動作中にシステム異常が発生
レプリケーションサービスの停止中に、同期対象のデータファイルを更新
"利用者プログラムを点検する"の"データファイルの更新"に示した方法で同期対象のデータファイルを更新する利用者プログラムの実行
レプリケーションサービスの停止中に利用者プログラムでデータ更新を行ってデータベース間の整合性が保てない状態にならないように、レプリケーションの運用開始および停止の作業手順を設計してください。
また、運用の誤りやシステム異常の発生を想定し、復旧方法を定めておいてください。
同期対象のデータファイルがオープンされている状態で次のコマンドを実行
CANALJOBコマンド
POWEROFFコマンド
STRRPULGコマンド
STPREPLコマンド(ORDERLY-@NOを指定:レプリケーションサービス強制停止)
データファイルのオープン状態は、ASPのREFSYSコマンドで確認できます。
ASPのREFSYSコマンドの詳細は、「ASP システムコマンド集」を参照してください。