FUJITSU Linkexpress Replication option説明書 |
目次
索引
![]() ![]() |
第6章 コマンドリファレンス | > 6.20 lxrpocreコマンド |
抽出定義は、複写元システム側で定義します。
本コマンドの入力ファイルは、利用者で作成し管理してください。
同じ抽出定義名を2つ以上定義できません。
Oracleが起動されていない場合、本コマンドは異常終了します。
条件指定に指定する列にNOT NULLが指定されていない場合、本コマンドは異常終了します。
条件指定に指定する列が、DATATYPEで指定した以下のどれかのデータ型でない場合、本コマンドは異常終了します。
CHAR
NCHAR
INT
SINT
NUMERIC
DECIMAL
TIMESTAMP
条件指定に指定できる列の数は、最大64個です。
条件指定に指定できる列のデータ長の合計は、最大1000バイトです。
等値指定(=指定)の条件指定には、最大32個までの定数のリストが指定できます。
抽出定義の対象に指定したデータベース資源は、削除(DROP)、変更(ALTER)できません。
抽出定義によって“差分ログファイル”が作成されます。ただし、運用種別に“LOAD”を指定した場合は、“差分ログファイル”は作成されません。
本コマンドの実行者は、LOGPATHオペランドに指定したパスに対してファイルを作成する権限が必要となります。
バイトスワップの指定にLITTLE-BIGは指定できません。また、バイトスワップの指定にBIG-LITTLEを指定した場合で、抽出コード系とバイトスワップの指定との整合性がとれていない場合は、バイトスワップの指定が無視され抽出コード系優先のバイトオーダとなります。
環境変数ORACLE_SIDで対象のOracleのシステム名を設定してください。
複数のOracleデータベースを運用するときは、以下の点に注意してください。
差分ログファイル格納ディレクトリパス名が、他のシステムのディレクトリパス名と重ならないようにしてください。
システム名が異なる場合、同じ抽出定義名を定義することができます。
抽出定義の対象に指定されているデータベース資源がOracleで未定義の場合、本コマンドは異常終了します。
Linkexpress Replication optionが起動されていない場合、本コマンドは異常終了します。
コマンドを実行したユーザIDに動作環境ファイルの参照権限がない場合、本コマンドは異常終了します。
本製品はOracleからSymfoware/RDBへのレプリケーションを実現するために、抽出する形式をSymfoware/RDBに格納可能な形式で抽出します。DATE型などのOracleとSymfoware/RDBで形式が異なるもの、あるいは数値型の精度、位取りが異なるものについては、Symfoware/RDBのデータ型に格納可能であることを確認して抽出定義を実行してください。抽出形式はDATATYPEオペランドで指定します。DATATYPEオペランドの指定値はSymfoware/RDBの表の定義内容およびDBサービス定義内容に合せて指定してください。
数値型の差分データをDATATYPEの属性に変換する場合に、変換エラー(オーバーフローまたはアンダーフロー)になった場合はコンソールにメッセージが出力され、代替数字に置き換えられます。コンソールについては、“はじめに”を参照してください。代替数字はオーバーフローの場合は、DATATYPEオペランドに指定した属性に格納可能な最大値が設定され、アンダーフローの場合は、DATATYPEオペランドに指定した属性に格納可能な最小値が設定されます。そのためにDATATYPEオペランドの指定は扱うデータの範囲を十分考慮して設計してください。
なお、NUMERIC、DECIMALなどの小数点を扱う属性については、整数部がオーバーフローまたはアンダーフローした場合には上記と同じ代替処理が行われ、小数部がオーバーフローまたはアンダーフローした場合には近似値が設定されます。
数値型の場合は、“6.20.5.2 DATATYPEの指定の判断方法”に記述している以外の属性、精度、位取りを指定することもできます。この場合は、抽出定義コマンドの実行時に警告メッセージが出力されます。また、この場合には実際の差分データがDATATYPEオペランドに指定した属性の精度、位取りを超える可能性があります。そのため、実際に扱う差分データの範囲を充分考慮して、DATATYPEオペランドの設定を行ってください。
例)Oracleの表にNUMBER(10,0)と定義されている場合に、DATATYPEオペランドにINTを指定するとNUMBER(10,0)にはINTの精度を超えるデータが格納可能であるため、警告メッセージが出力されます。しかし、実際に格納するデータがすべてINTの精度の範囲である場合には、DATATYPEオペランドにINTを指定することができます。ただし、INTの精度を超える差分ログが発生した場合には、INTの精度の最大値でレプリケーションします。
FLOAT(p)で精度を超えるデータがあった場合は、異なる値でレプリケーションされる場合があります。例えば、FLOAT(p)でけた数を超えるものは、Oracleへの格納時にp以下は四捨五入でまるめられます。この時、まるめられるけた以下も整数の場合には異なるデータとなって抽出されます。
例1)まるめられるけた以下が整数でない場合
FLOAT(5)に[111.1111111]をINSERTすると、Oracleへの格納時には[111.11]にまるめられます。このような場合には、Linkexpress Replication optionは[111.11]として扱います。
例2)まるめられるけた以下が整数の場合
FLOAT(5)に[111111.1111]をINSERTすると、Oracleへの格納時には[111110]にまるめられます。このような場合には、Linkexpress Replication optionは[11111]として扱います。(異なる値でレプリケーション)
文字列型および各国語文字列型の列をレプリケーションする場合には、必ずレプリケーション対象表のデータ属性と同じバイト数をDATATYPEに指定する必要があります。なお、DATATYPEに指定する属性がNCHARおよびNVARCHARの場合には、DATATYPEに指定する値は文字数を指定するため、レプリケーション対象表のデータ属性がバイト数の場合には、1/2倍した値を指定してください。
レプリケーション対象表のNCHARおよびNVARCHAR属性の項目をDATATYPEがNCHARまたはNVARCHAR属性で抽出する場合には、以下について利用者側で保証する必要があります。
格納されているデータはすべて各国語文字列型であること
各国語文字とASCII系文字が混在する場合、警告メッセージRP08002を出力する場合があります。
Oracle8i以前でデータサイズがバイト数指定の場合、レプリケーション対象表のNCHARおよびNVARCHAR属性の長さは偶数であること
格納されるデータにUnicode固有文字を含まないこと
入力ファイルに指定したスキーマ名などのOracle識別子は、大文字、小文字を区別します。
-uオプションで指定したデータベース・アクセス・ユーザIDとパスワードは小文字で指定してもOracle内部では大文字で扱います。小文字で扱う場合は""をつけて指定してください。(Oracleの仕様と同じです。)
複写元データベースが、Oracle9iまたはOracle10gであり、DATATYPEにNCHARを指定し、更新するデータの末尾が半角の空白である場合、その空白を全角の空白に置き換えた差分ログを取得します。
目次
索引
![]() ![]() |