この章では、Oracle GoldenGateのキャプチャおよびレプリケーションがサポートされるようにOracle GoldenGateが対話するデータベースを適切に構成する手順について説明します。ソース・システムのみに適用される手順、ターゲットのみに適用される手順、およびその両方に適用される手順があります。
この章は、次の項で構成されます。
Oracle GoldenGateは、Open Database Connectivity (ODBC)を介してInformix Dynamic Serverデータベースと接続します。Informix Dynamic Serverシステムのデータ・ソース名(DSN)を作成するには、次の手順に従います。DSNには、ODBCを介してInformix Dynamic Serverデータベースに接続する方法に関する情報が格納されています。Informix Dynamic Serverソースおよびターゲット・データベースごとに、DSNを作成します。
Oracle GoldenGateの適用プロセス(Replicat)では、文字型の列にデータが含まれている場合に、あるキャラクタ・セットから別のキャラクタ・セットへのデータ変換がサポートされます。このサポートを有効にするには、ODBCの設定時に、次のように言語パラメータが正しく設定されていることを確認します。
CLIENT_LOCALE=en_us.8859-1
DB_LOCALE=en_us.8859-1
サポート情報と制限の詳細は、Oracle GoldenGate for Windows and UNIXの管理を参照してください。
次の手順では、UNIXシステムでODBCを構成およびテストします。
UNIXのInformix ODBCドライバには、ODBCドライバ・マネージャが必要です。一般的なODBCドライバ・マネージャは、UNIX ODBCプロジェクトのWebサイトから無料で入手できます。
ソースからコンパイルする必要があります。2.3以降のバージョンをダウンロードする必要があります。
ODBCドライバ・マネージャをソース・ファイルからコンパイルする場合、Informix ODBCドライバが64ビット・バージョンのときは、64ビットとしてコンパイルする必要があります。これには、configure
、make
およびmake install
を実行する前に、環境変数' CFLAGS="-DBUILD_REAL_64_BIT_MODE" '
を設定する必要があります。
odbc.ini
ファイルの構成UNIXの場合は、odbc.ini
ファイルを構成する必要があります。Informixインストールに付属しているファイルを使用できます。これは$INFORMIXDIR/etc/odbc.ini
です。次の例に従い、DSNを構成します。
;---------------------------------------------------------------------------; IBM INFORMIX ODBC Sample File;; File: odbc.ini;;---------------------------------------------------------------------------[ODBC Data Sources]Infdrv1=IBM INFORMIX ODBC DRIVERInfdrv2=IBM INFORMIX ODBC DRIVER;; Define ODBC Database Driver's Below - Driver Configuration Section;[Infdrv1]Driver=/home/informix/ifx1170/lib/cli/iclit09b.soDescription=IBM INFORMIX ODBC DRIVERDatabase=stores_demoLogonID=odbcpwd=odbcServername=ids_server1[Infdrv2]Driver=/home/informix/ifx1170/lib/cli/iclis09b.soDescription=IBM INFORMIX ODBC DRIVERDatabase=stores_demoLogonID=odbcpwd=odbcServername=ids_server2CursorBehavior=0CLIENT_LOCALE=en_us.8859-1DB_LOCALE=en_us.8859-1TRANSLATIONDLL=/home/informix/ifx1170/lib/esql/igo4a304.so;; UNICODE connection Section;; adding here new ODBC DSN[superstores]Driver=/home/informix/ifx1170/lib/cli/iclis09b.soDatabase=superstores_demoServername=ol_informix1170CursorBehavior=0CLIENT_LOCALE=en_us.8859-1DB_LOCALE=en_us.8859-1TRANSLATIONDLL=/home/informix/ifx1170/lib/esql/igo4a304.so[ODBC];uncomment the below line for UNICODE connection;UNICODE=UCS-4;; Trace file Section;Trace=0TraceFile=/tmp/odbctrace.outInstallDir=/home/informixTRACEDLL=idmrs09a.so
odbcinst.ini
ファイルの構成次の例に示すように、内容を$INFORMIXDIR/etc/odbcinst.ini
ファイルに追加する必要もあります。
;---------------------------------------------------------------------------; IBM INFORMIX ODBC Sample File ;; File: odbcinst.ini;;---------------------------------------------------------------------------[ODBC Drivers]IBM INFORMIX ODBC DRIVER=Installed[IBM INFORMIX ODBC DRIVER]Driver=/home/informix/ifx1170/lib/cli/iclit09b.soSetup=/home/informix/ifx1170/lib/cli/iclit09b.soAPILevel=1ConnectFunctions=YYYDriverODBCVer=03.51FileUsage=0SQLLevel=1smProcessPerConnect=Y
ODBC構成をテストするには、INFORMIX
環境変数とODBCライブラリを設定してから、次のコマンドを発行する必要があります。
export PATH ${INFORMIXDIR}/bin:path_to_ODBC_driver_manager
/bin:${PATH} export LD_LIBRARY_PATH $INFORMIXDIR/lib:$INFORMIXDIR/lib/esql:path_to_ODBC_driver_manager
/lib:$LD_LIBRARY_PATH export ODBCINI =/etc/odbc.ini # depends which odbc.ini file contains your DSN entry isql -v superstores informix informix123
この項では、WindowsシステムでODBCを構成する方法について説明します(DSNの構成を含む)。ユーザーDSNおよびシステムDSNの両方がサポートされているため、どちらのDSNも作成できます。
次のプロセスでは、WindowsのデフォルトODBCクライアントを使用します(詳細は、状況依存ヘルプおよびIBM Informix ODBCドライバ・プログラマのマニュアルを参照してください)。
「スタート」、「コントロール パネル」、「管理ツール」、「データ ソース (ODBC)」の順に選択して、デフォルトODBCクライアントを実行します。
(オプション)システムDSNを構成するには、「システム DSN」タブをクリックします。以降のすべての手順は、いずれのDSNの構成でも同じです。
「追加」をクリックします。
「データ ソースの新規作成」ダイアログ・ボックスが表示されます。
「データ ソースの新規作成」で、Informix Dynamic Serverバージョンに一致するクライアントを選択します。
「完了」をクリックします。データ ソースの新規作成ウィザードが表示されます。
次を入力します。
名前: 任意の名前にできます。Windowsクラスタで、クラスタ内のすべてのノードにわたって同じ名前を使用します。
説明: (オプション)このデータ・ソースの説明を入力します。
サーバー: Informix Dynamic Serverを選択します。Extractの場合は、syscdcv1
データベース・フィールドを選択します。Replicatの場合は、データベース・フィールドをターゲット・データベースの名前として選択します。DSNは、このデータベースである必要があります。
「次へ」をクリックします。
ログイン認証で、Oracle GoldenGateの「ユーザーが入力する Informix Dynamic Server 用のログイン ID とパスワードを使う」を選択し、データベース資格証明を使用します。informix
ユーザーのログイン情報を指定します。informix
ユーザーは、すべてのOracle GoldenGateプロセスで使用される必要があります。
「次へ」をクリックします。
デフォルト・データベースが、Oracle GoldenGateが接続するデータベースに設定されていない場合は、「既定のデータベースを以下のものに変更する」をクリックして、正しい名前を選択します。
ANSIを使用するためのその他の設定を設定します。
「次へ」をクリックします。
次のページはデフォルト設定のままにします。
「完了」をクリックします。
「データ ソースのテスト」をクリックし、接続をテストします。
確認ダイアログ・ボックスと「データ ソースの新規作成」ダイアログ・ボックスを閉じます。
各Informix Dynamic Serverソースおよびターゲット・データベースで、この手順を繰り返します。
次の表属性は、Oracle GoldenGate環境で処理する必要があります。
ターゲット表のトリガー、カスケード削除制約およびカスケード更新制約を無効化するか、Oracle GoldenGateデータベース・ユーザーによる変更を無視するようにそれらを変更します。Oracle GoldenGateでは、トリガーまたはカスケード制約によって生じるDMLをレプリケートします。ターゲット表で同じトリガーまたは制約を有効にした場合、レプリケートされたバージョンのためにそのトリガーまたは制約が冗長になり、データベースによってエラーが返されます。ソース表がemp_src
およびsalary_src
、ターゲット表がemp_targ
およびsalary_targ
である場合の次の例を検討してください。
emp_src
に削除が発行されます。
それによって、削除がsalary_src
にカスケードされます。
Oracle GoldenGateによって、両方の削除がターゲットに送信されます。
親削除が最初に到達し、emp_targ
に適用されます。
親削除によって、削除がsalary_targ
にカスケードされます。
salary_src
からカスケードされた削除がsalary_targ
に適用されます。
行はすでに手順5で削除されたため、その行を見つけることはできません。
Oracle GoldenGateでは、レプリケートされた更新および削除の正しいターゲット行を検索するために、ソース表とターゲット表にいくつかの一意の行識別子が必要です。主キーなど、定義されている行識別子が表にない場合は、SQL WHERE
句で使用可能なすべての列から行識別子がOracle GoldenGateによって構築されます。
TABLE
文またはMAP
文でKEYCOLS
句を使用しない場合には(3.2.2.2項を参照)、Oracle GoldenGateにより、使用される行識別子が次の優先順位で選択されます。
主キーの制約列。
主キーが表に存在しない場合は、LOB以外のすべての列がOracle GoldenGateによって使用され、主キーが形成されます。
表に前述のタイプの行識別子のいずれかがない場合や、それらの識別子を使用しないほうが適切な場合、表に常に一意の値を含む列があるときは、代替キーを定義できます。この代替キーは、ExtractのTABLE
パラメータおよびReplicatのMAP
パラメータにKEYCOLS
句を指定して定義します。指定されたキーは、Oracle GoldenGateが検出する既存の主キーまたは一意キーを上書きします。詳細は、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。
ターゲット表に主キーまたは一意キーがない場合は、重複行が存在する可能性があります。そのような表では、Oracle GoldenGateが必要以上に多く行を更新または削除し、その結果、注意を促すエラー・メッセージが表示されずに、ソース・データおよびターゲット・データが同期しなくなる可能性があります。更新される行数を制限するには、Replicatパラメータ・ファイルでLIMITROWS
オプションを指定してDBOPTIONS
パラメータを使用します。LIMITROWS
を使用すると、処理されるのは1行のみのため、ターゲット・システムでのOracle GoldenGateのパフォーマンスが向上することがあります。
この項では、トランザクション・ログのサイズ設定と、Oracle GoldenGate構成に含める表のロギングを有効化する手順について説明します。ログに記録された表の変更データは、Extractキャプチャ・プロセスに渡されます。
LOGSIZE
およびLOGFILES
構成パラメータでは、論理ログ・ファイルのサイズと数を指定するため、間接的にOracle GoldenGateチェックポイントに影響を与えます。これらは調整が必要になる場合があります。
Informixでは、アクティブ・ログ・ファイルをローリング・ベースでアーカイブします。たとえば、オンライン・ログ・ファイルが10ある場合、番号10のファイルが一杯になると、番号1のログ・ファイルがアーカイブされ、ログ・ライターが新しいオンライン・ログに書き込む準備ができます。
Oracle GoldenGateで現在処理中のログは、次のアーカイブになるログになることはありません。GGSCIでINFO EXTRACT
group
コマンドを発行すると、Oracle GoldenGateで現在処理中のLSNを確認できます。次に、onstat-1
コマンドを使用して、Informixサーバーのオンライン・ログ・ステータスを確認します。この情報に基づいて、オンライン・ログ・ファイルの数およびサイズを定義し、Extractが処理を終了するまで、アーカイブされないようにすることができます。次のように、ファイル・サイズを1048576
に構成することをお薦めします。
onmode -wf LOGSIZE=1048576
Oracle GoldenGate構成に含める表の完全行ロギングを有効にする必要があります。キャプチャ用にログ・データをExtractプロセスに渡せるように、ロギングをソース・システムで有効にする必要があります。双方向構成使用している場合は、構成の両方のシステムでロギングを有効にする必要があります。
Oracle GoldenGate GGSCIインタフェースを使用して、完全行ロギングを有効にする必要があります。
ソース・システムでGGSCIを実行します。
informix
ユーザーとしてDBLOGIN
コマンドを発行します。セキュリティ構成に応じて、次のいずれかのオプションを使用します。
Oracle GoldenGate資格証明ストアを使用している場合:
DBLOGIN USERIDALIAS alias_of_informix_user
Oracle GoldenGate資格証明ストアを使用していない場合:
DBLOGIN SOURCEDBDSN_of_syscdc
USERID informix PASSWORDinformix_password
algorithm
ENCRYPTKEY {keyname
| DEFAULT}]
DBLOGIN構文の詳細は、『Oracle GoldenGateリファレンスfor Windows and UNIX』を参照してください。
ADD TRANDATA
コマンドを発行します。
ADD TRANDATAdatabase
.schema.
table
コマンド入力でスキーマおよび表名コンポーネントにワイルドカードを使用できます。
ADD TRANDATAの詳細は、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。
LOBをフェッチするようにExtractを構成するには、LOBが格納されている表を指定するTABLE
文にFETCHCOLS
オプションを含めます。TABLE
文は、Oracle GoldenGateによるレプリケーション用にキャプチャするデータベース・オブジェクトを指定するのに使用されます。TABLE
およびその他の構成パラメータの詳細は、『Oracle GoldenGate Oracle GoldenGateの管理for Windows and UNIX』および『Oracle GoldenGate Oracle GoldenGateリファレンスfor Windows and UNIX』を参照してください。
Informix ODBCドライバには、クラシック・キャプチャ・モードのReplicatでエラーを発生させる既知のメモリー・リークがあります。この問題を修正するには、次の手順を使用します。
CSDK 4.10 FC4を別のディレクトリにインストールします。
LD_LIBRARY_PATH
またはライブラリ検索のそれぞれの動作固有のパスを、このCSDKディレクトリにエクスポートします。次に例を示します。
export LD_LIBRARY_PATH=CSDKInstallPath/lib/cli:CSDKInstallPath
/lib/esql:$LD_LIBRARY_PATH
STOP MANAGER
を実行します。
START MANAGER
を実行します。
START REPLICAT
を実行します。