ここでは、Oracle抽出レプリケーションのサポートする機能範囲と注意事項について説明します。
レプリケーション可能な組合せ
レプリケーション機能のサポート範囲
Oracleのサポート範囲
Oracle抽出レプリケーションの注意事項
Oracle抽出レプリケーションにおける複写元データベース、複写先データベースの組合せについては、ソフトウェア説明書を参照ください。
なお、複写先データベースに、Symfoware/RDB以外のデータベースを使用することはできません。
Oracle抽出レプリケーションは以下の機能をサポートしていません。他の機能範囲はSymfoware抽出レプリケーションと同じです。
グループ単位のレプリケーション
複写元システムのクラスタシステム対応機能
2Gバイトを超える差分ログファイル(抽出定義のLOGSIZEオペランド)
差分ログファイルサイズの単位指定(抽出定義のLOGSIZEオペランド)
可変長ログ形式の差分データ
Oracleのサポート機能範囲を説明します。
ビュー、シノニムまたはデータベース・リンクをレプリケーション対象にすることはできません。
レプリケーション対象の表には、以下の制限があります。
列の合計長の制約
列数の制約
表に定義している列の合計長が32000バイト以下である表をレプリケーション対象にすることができます。列の合計長が32000バイトを超える表をレプリケーション対象にすると差分ログの取得開始コマンド(lxrpoenaコマンド)がエラーになる場合があります。
列の合計長とは、表に定義しているデータ型ごとの表示長の合計です。以下にデータ型ごとの表示長の算出方法を示します。表示長の詳細は“Oracleのマニュアル”を参照してください。
データ型 | 表示長(単位はバイト) |
---|---|
NUMBER(p,s) [p>=Q] | p+2 |
NUMBER(p) | p+2 |
NUMBER(p,-s) | p+s+2 |
NUMBER(p,s) [p<s] | s |
NUMBER | 38+2 |
CHAR(n)/VARCHAR2(n) | n(注) |
NCHAR(n)/NVARCHAR2(n) | n |
FLOAT(p)/FLOAT | 23 |
DATE | 19 |
p:精度を表します。
s:スケールを表します。
n:文字列および各国語文字列のバイト数を表します。
注)文字数を表します。
Linkexpress Replication optionは、差分複写を実現するためにトリガを使用しています。トリガ定義では、識別子の数やサイズに制限があり、識別子の数やサイズは、レプリケーション対象の表に定義している列数およびデータ型に依存します。
そのために、以下の条件を満足する表をレプリケーション対象にすることができます。以下の条件を満足しない表をレプリケーション対象にすると差分ログの取得開始コマンド(lxrpoenaコマンド)がエラーになる場合があります。
対象表に必要な領域長の合計 < 950
対象表に必要な領域長の合計:
列1に必要な領域長 + 列2に必要な領域長 + … 列Nに必要な領域長
列1,2…Nに必要な領域長:レプリケーション対象の表に定義しているすべての列について、列のデータ型ごとに必要な領域長(データ型ごとに必要なトリガの領域長)
データ型ごとに必要なトリガの領域長を以下に示します。
各国語文字列型(NCHAR、NVARCHAR2) :2.33
文字列型(CHAR、VARCHAR、VARCHAR2):1.20
数値型(NUMBER、FLOAT) :1.45
時間型(DATE) :2.08
例えば、CHAR型だけで構成された表では、791個以下の列数(950/1.20)で構成された表をレプリケーション対象にすることができます。(950/1.20=791)
注意
条件を満足しない場合でもレプリケーション対象にできる場合があります。その場合には“差分ログの取得開始コマンド”が正常終了するかどうかにより判断することができます。
列数の制約は全複写だけで運用する場合は関係ありません。
以下の方法によるデータベースの更新は一括差分複写のサポート対象外です。以下の方法でデータベースを更新すると、複写元データベースと複写先データベース間の整合性が保てなくなりますので、一括差分複写業務の運用中は実行しないようにしてください。誤って実行してしまった場合には、複写元データベースと複写先データベースの同期をとるために、全複写業務を実行する必要があります。
パラレルDML
ダイレクト・ロード・インサート
SQL*Loaderのダイレクト・パス
SQL*Loaderの従来型パス(TRUNCATE指定)
スイッチバック処理
データガード
フラッシュバック
Linkexpress Replication optionでは、未サポートのOracleデータ型があります。未サポートのデータ型が定義されている表をレプリケーション対象にすることはできません。また、サポートしているデータ型にも扱えるデータに条件があります。以下に示します。
データ型 | サポート可否 | 条件 |
---|---|---|
CHAR型 | ○ |
|
VARCHAR2型 | ○ |
|
VARCHAR型 | ○ |
|
NCHAR型 | ○ | 文字数は、1000まで。 |
NVARCHAR2型 | ○ | 文字数は、2000まで。 |
LONG型 | × |
|
NUMBER型 | ○ | 位取りの絶対値が精度の値より大きく、かつ、マイナスの値の場合はサポートしていません。 |
DATE型 | ○ | ‘YYYY-MM-DD HH24:MI:SS’型だけをサポートしています。 |
LOB型 | × |
|
RAW型 | × |
|
LONG RAW型 | × |
|
ROWID型 | × |
|
MLSLABEL型 | × |
|
FLOAT型 | ○ | 精度が53以上の場合はサポートしていません。 |
ユーザ定義型 | × |
|
TIMESTAMP型 | × | |
TIMESTAMP WITH TIME ZONE型 | × | |
TIMESTAMP WITH LOCAL ZONE型 | × | |
INTERVAL YEAR TO MONTH型 | × | |
INTERVAL DAY TO SECOND型 | × | |
Arrive型 | × | |
XML Type型 | × | |
ネイティブXMLデータ型 | × | |
その他データ型 | × | 取り扱うデータは、OSの文字コードの範囲としてください。 |
以下のUPDATE文によるデータベースの更新は、一括差分複写のサポート対象外です。以下のUPDATE文でデータベースを更新すると、複写元データベースと複写先データベース間の整合性が保てなくなりますので、レプリケーション対象表に対して使用しないでください。
誤って実行してしまった場合には、複写元データベースと複写先データベースの同期をとるために、全複写業務を実行する必要があります。
SQL文 | 代替方法 |
---|---|
1つのUPDATE文による複写先データベースのPRIMARY KEYに対応した複写元データベースの一意性制約列(複数行)の集合(バルク)更新 | 適切な順序で1行ずつ更新してください。 |
以下の運用は使用できません。
Oracle Parallel Server
パーティション機能
分散機能
データベース・キャラクタ・セットおよび各国文字キャラクタ・セットはオペレーティング・システムのコード系と同じにする必要があります。さらにNLS環境およびキャラクタ・セットは以下が使用可能です。
言語:JAPANESE
キャラクタ・セット:JA16EUCまたはJA16SJIS
日時書式:’YYYY-MM-DD HH24:MI:SS’
その他のNLS環境はデフォルト
ここでは、特に注意が必要な事項について説明します。他の細かな注意事項については、本章および“第6章 コマンドリファレンス”に記述しています。
Oracleの異常や、Linkexpress Replication optionのシステムファイルのディスク破壊などの理由により、一括差分複写業務が異常終了した場合には、全複写業務を実行し、複写元データベースと複写先データベースの同期をとる必要があります。
トランザクションログデータベースから差分ログを収集する処理は、Oracleの性能に依存します。そのため、バッファキャッシュやデータベースのブロックサイズなどのOracleシステムパラメタのチューニングを必ず実施する必要があります。
数値型のデータ型で、実際にデータベースに格納されているデータの精度および位取りが、抽出定義に指定した抽出形式(DATATYPEに指定したデータ型)の精度を超えた場合には、そのデータに対して抽出形式に格納可能な近似値が代替値として設定され、コンソールに警告メッセージが出力されます。コンソールについては、“はじめに”を参照してください。
NUMBER(5,0)のOracleデータ型に、抽出定義のDATATYPEにSINTを指定し、実際のデータがSINTの精度(32768)をオーバフローした場合、格納可能な最大値として32768が設定されます。このように、NUMBER(5,0)で32768~99999または-32769~-99999のデータが存在する可能性がある場合はINTで抽出定義を実施してください。
Oracleでは、FLOAT型に精度を超えるデータを格納する場合は、データの自動変換が行われます。Linkexpress Replication optionは、データベースに格納された値でレプリケーションします。
Linkexpress Replication optionを導入すると、差分ログを取得するトリガの処理により利用者プログラムのレスポンス性能に影響を与えます。レプリケーションのオーバヘッドを考慮した運用設計を実施してください。
Oracleの項目属性がNCHAR型の場合、更新するデータに各国語文字とASCII系文字を混在できるかどうかは、DATATYPEの指定に依存します。