2 Oracle GoldenGateシステムの準備
内容は次のとおりです。
Oracle GoldenGateのためのトランザクション・ログの構成
DML操作を取得するために、Oracle GoldenGateはデフォルトでDB2 LUWのオンライン・ログを読み取ります。ただし、オンライン・ログが使用可能でない場合は、アーカイブ・ログを読み取ります。Oracle GoldenGateの処理の継続性と整合性を確実にするために、ログを次のように構成します。
トランザクション・ログの保持
データベースのバージョンに応じて次のパラメータ・セットのいずれかを有効にすることで、ロールフォワード・リカバリ用にトランザクション・ログを保持するようにデータベースを構成します。
-
DB2 LUW 9.5以上:
LOGARCHMETH
パラメータを次のように設定します。-
LOGARCHMETH1
をLOGRETAIN
に設定します。 -
LOGARCHMETH2
をOFF
に設定します。
また、フォワード・リカバリが有効であるかぎり、他の
LOGARCHMETH
オプションを使用できます。たとえば、次のものは有効です。-
LOGARCHMETH1
をDISK
に設定します。 -
LOGARCHMETH2
をTSM
に設定します。
-
ログ保存パラメータを判別する手順:
-
データベースに接続します。
db2 connect to
database
userusername
usingpassword
-
データベース名を取得します。
db2 list db directory
-
データベースのデータベース構成を取得します。
db2 get db cfg for
database
確認するフィールドは次のとおりです。
Log retain for recovery status = RECOVERY User exit for logging status = YES
ログ保存パラメータを設定する手順:
アーカイブ・パスの指定
DB2 LUWのOVERFLOWLOGPATH
パラメータをアーカイブ・ログ・ディレクトリに設定します。ノードは、指定したパス変数に自動的にアタッチされます。
db2 connect todatabase
db2 update db cfg using overflowlogpath "path
"
ノード自体をパスから除外します。たとえば、アーカイブ・ログ・ディレクトリへのフルパスが/sdb2logarch/oltpods1/archive/OLTPODS1/NODE0000
である場合、OVERFLOWLOGPATH
値は、/sdb2logarch/oltpods1/archive/OLTPODS1
として指定します。
処理のための表の準備
次の表属性は、Oracle GoldenGate環境で処理する必要があります。
トリガーおよびカスケード制約の無効化
ターゲットのTeradata表で、トリガー、カスケード削除制約、およびカスケード更新制約を無効化します。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では、レプリケートされた更新および削除に対して正しいターゲット行を見つけるために、ソース表とターゲット表にある形式の一意の行識別子が必要です。
TABLE
またはMAP
文でKEYCOLS
句が使用されないかぎり、Oracle GoldenGateは、使用する行識別子を次の優先順位に従って選択します。
-
主キー
-
タイムスタンプまたはマテリアライズされていない計算結果列を含まない英数字順で最初の一意キー。
-
前述のキー・タイプのいずれも存在しない場合(その他の種類のキーが表に定義されている場合でも)、Oracle GoldenGateは、データベースで一意キーでの使用を許可されているすべての列(キー内での使用がOracle GoldenGateでサポートされていない列やOracle GoldenGate構成から除外されている列は除く)で疑似キーを作成します。
ノート:
表に使用可能な他のキーがない場合や、表にキーがまったくない場合、Oracle GoldenGateは該当するメッセージをレポート・ファイルに記録します。すべての列からキーを作成すると、ソース・システムのOracle GoldenGateのパフォーマンスが低下します。ターゲットでは、このキーはReplicatであまり効率的でないより大きいWHERE
句が使用される原因となります。 -
表に適切なキーがない場合、あるいは既存のキーを使用しない場合は、表に一意の値が常に含まれる列があれば、代替キーを定義できます。Extractの
TABLE
パラメータおよびReplicatのMAP
パラメータ内にKEYCOLS句を含めることで、この代替キーを定義します。指定したキーにより、Oracle GoldenGateで検出される既存の主キーまたは一意キーはオーバーライドされます。Oracle GoldenGateリファレンスのTABLE | MAPを参照してください。
親トピック: 処理のための表の準備
KEYCOLS
を使用したカスタム・キーの指定
前述のキー・タイプの行識別子が表に存在しないか、または、それらの識別子を使用しない場合は、常に一意の値が含まれている列が表にあれば、代替キーを定義できます。ExtractのTABLE
パラメータおよびReplicatのMAP
パラメータ内にKEYCOLS
句を含めることで、この代替キーを定義します。指定したキーにより、Oracle GoldenGateで検出される既存の主キーまたは一意キーはオーバーライドされます。
親トピック: 表における行の一意性の保証
キー変更の防止
Oracle GoldenGateで表のデータの抽出が開始された後で、キーに列を追加しないでください。このルールは、主キー、一意キー、KEYCOLS
キー、またはすべての列キーに適用されます。DB2 LUWでは、表に追加される列の変更前イメージは提供されません。ソースでキー内の列が更新された場合、Oracle GoldenGateでは更新のレプリケートの際、ターゲット表の現在の値と比較するために変更前イメージが必要になります。
親トピック: 処理のための表の準備
変更の取得の有効化
CREATE TABLE
およびALTER TABLE
コマンドのDATA CAPTURE CHANGES
機能で提供される拡張形式でデータの変更が記録されるよう、DB2を構成します。この形式により、Oracle GoldenGateでは、UPDATE文によって変更された行の変更前イメージと変更後イメージの全体を使用できます。GGSCIを使用して、次のようにALTER TABLE
コマンドを発行できます。
GGSCIからの変更の取得を有効にする手順:
例2-1 LONGVAR
ロギングを除外する手順:
ALTER TABLE
コマンドからINCLUDE LONGVAR COLUMNS
句を省略するには、EXCLUDELONG
オプション付きでADD TRANDATA
を使用します。
ADD TRANDATA owner.table
, EXCLUDELONG
ノート:
LONGVAR
列をロギングから除外した場合、変更前イメージを必要とするOracle GoldenGateの機能(GETUPDATEBEFORES
、NOCOMPRESSUPDATES
およびNOCOMPRESSDELETES
パラメータなど)では、表にこれらの列が含まれているとエラーが返される場合があります。回避策については、TRANLOGOPTIONS
パラメータのREQUIRELONGDATACAPTURECHANGES
| NOREQUIRELONGDATACAPTURECHANGES
オプションを参照してください。
親トピック: 処理のための表の準備
マテリアライズ問合せ表の維持
ソースとターゲットのマテリアライズ問合せ表(MQT)間の同等性を維持するには、ベース表をレプリケートしますが、MQTはレプリケートしません。ターゲット・データベースでは、Replicatがベース表に適用する変更に基づいてMQTが整備されます。
これらの表を構成するためのルールを次に示します。
-
ベース表を
TABLE
およびMAP
文に含めます。 -
MQTは
TABLE
およびMAP
文に含めないでください。 -
MQT名が通常の表名とともに解決される可能性はありますが、
TABLE
およびMAP
文でワイルドカードを使用できます。Oracle GoldenGateは、ワイルドカードを使用した表リストからMQTを自動的に除外します。ただし、ExtractのTABLE
文でMQTを名前によって明示的にリストすると、Extractが異常終了する原因となります。
親トピック: 処理のための表の準備
DB2 LUWのデータベース構成
-
Oracle GoldenGate Extractプロセスは、DB2 LUWソース・データベースのトランザクション・ログ・ファイルを読み取るため、管理APIの
DB2READLOG
関数を呼び出します。DB2READLOG
の他に、Extractは他の少数のAPIルーチンを使用して、起動時にソース・データベースの構成をチェックします。 -
Oracle GoldenGate Replicatプロセスは、DB2 LUWターゲット・データベースでDB2CLIインタフェースを使用します。このインタフェースのインストール方法は、DB2のドキュメントを参照してください。
-
データベースがローカルで定義されているかぎり、Oracle GoldenGateがインストールされているサーバーとは別のサーバーにデータベースを配置できます。たとえば、データベース
mydb
をabc123
にあるデータとともにローカルで使用できます:catalog tcpip node abc123 remote abc123.us.mycompany.com server 00000 catalog db mydb as abc123 at node abc123 AUTHENTICATION server
-
DB2 Universal Databaseには
db2trc
と呼ばれる内部トレース機能があり、プロセス間通信リソース(IPC)を取得します(セマフォおよび共有メモリーの両方)。DB2のトレースが有効になっていなくても、オペレーティング・システムに対するsemget()
呼出しを発行する場合があります。IPCリソースが取得されないことにより、これらの呼出しが失敗するため、DB2クライアントで次のコマンドを発行する必要があります。db2trc alloc
-
ローカル・データベースを使用するDB2クライアントで最適なパフォーマンスを得るために、同じマシンにあるデータベースにOracle GoldenGateを接続するときには、TCP/IPではなくローカル・ノード・カタログを作成することをお薦めします。ローカル・ノードはIPCを使用するため、ソケットAPIを使用してローカル・データベースにアクセスするTCP/IPノードよりかなり高速になります。
-
別のシステムからリモートでDB2 LUWに接続するには、IBMの次のドライバ・パッケージを使用する必要があります。
-
IBM Data Server Runtime Client
-
IBM Data Server Driver Package (DSドライバ)
-
IBM Data Server Client
IBM Data Server Driver for ODBC and CLI (CLIドライバ)は、DB2 LUWではサポートされていません。
-
親トピック: Oracle GoldenGateシステムの準備
DB2 LUWのOracle GoldenGateプロセス用データベース・ユーザー
-
Oracle GoldenGate専用のデータベース・ユーザーを作成します。データベースに接続する必要のあるすべてのOracle GoldenGateプロセスに対して同じユーザーでもかまいません。
-
Extract (ソース・データベース)
-
Replicat (ターゲット・データベース)
-
DEFGEN
(ソース・データベースまたはターゲット・データベース)
-
-
データのセキュリティを維持したり、Oracle GoldenGateの処理を的確に監視したりするには、他のユーザー、アプリケーションまたはプロセスに対してOracle GoldenGateデータベース・ユーザーでのログインまたは操作を許可しないでください。Oracle GoldenGate資格証明ストアにログイン資格証明を格納することをお薦めします。資格証明ストアはログイン名およびパスワードにローカルのセキュアなストレージを利用し、Oracle GoldenGateのパラメータ・ファイルにある別名のみを指定することを許可します。
-
システム管理者(
SYSADM
)またはデータベース管理者(DBADM
)権限を、Extractを実行するデータベース・ユーザーに割り当てます。ExtractユーザーにDBADM
を付与するには、SYSADM
権限を持つユーザーが次のGRANT文を発行します。GRANT DBADM ON DATABASE TO USER
user
この権限は、DB2 Control Centerの
User and Group Objects
フォルダからも付与できます。Oracle GoldenGateプロセスに割り当てられているユーザーのデータベース・タブでは、「Database Administrative Authority」ボックスが選択されている必要があります。ノート:
Extractユーザーに必要な権限がない場合、Extractは次のエラーを記録して停止します。
[SC=-1224:SQL1224N A database agent could not be started to service a request, or was terminated as a result of a database system shutdown or a force command. SQL STATE 55032: The CONNECT statement is invalid, because the database manager was stopped after this application was started]
-
Replicatを実行しているデータベース・ユーザーに少なくとも次の権限を付与します。
-
ターゲット・データベースに対するローカルの
CONNECT
-
システム・カタログ・ビューに対する
SELECT
-
ターゲット表に対する
SELECT
、INSERT
、UPDATE
およびDELETE
-
親トピック: Oracle GoldenGateシステムの準備
セッション文字セットの設定
ソースおよびターゲット・データベース間の文字セットの変換をサポートするには、セッション文字セットがデータベース文字セットと同じであることを確認します。DB2CODEPAGE
環境変数を使用してセッション文字セットを設定できます。
親トピック: Oracle GoldenGateシステムの準備
初期抽出の準備
Oracle GoldenGate環境の初期化の際、最初のデータ同期を行い、Oracle GoldenGateプロセスを初めて起動します。これらの手順とともに、プロセス・グループを作成します。Extractグループを作成するには、トランザクション・ログで最初の開始位置を確定する必要があります。この初期読取り位置は、次のいずれかに基づくトランザクション境界上に置かれます。
-
トランザクション・ファイルの終わり
-
特定のLRI値
開始ポイントは、ADD EXTRACT
コマンドのBEGIN
オプションで指定します。
Extractプロセスを初めて起動すると、指定した開始ポイントの後に発生したすべてのトランザクション・データが取得されますが、開始ポイントより前に発生したデータは取得されません。このため、オープン・トランザクションが開始ポイントをまたがる場合、トランザクションの一部しか取得されないことがあります。
初期トランザクションの一貫性を確保する手順:
トランザクションの部分的な取得を避けるには、データベースが一時停止状態になっている時点でExtractプロセスを初期化します。DB2 LUWでは、このような目的のためにQUIESCE
コマンドが提供されています。これがトランザクションの一貫性を確保する唯一の方法です。
ノート:
Extractを初期化した後の再起動では、プロセスはリカバリ・チェックポイントを使用して最終読取り位置をマークするため、部分的なトランザクションの抽出は行われません。
オープン・トランザクションを表示する手順:
IBMでは、DB2データベースおよびインスタンスを監視するためのdb2pd
というユーティリティを提供しています。これを使用して、オープン・トランザクションに関する情報を表示したり、開始ポイントをまたぐトランザクションがないかを判別できます。ただし、DB2 LUWのログ・レコードにはタイムスタンプがないため、正確なアセスメントを行うのが可能ではないかもしれません。可能な場合は、Oracle GoldenGateを初期化する前にデータベースを停止します。
Oracle GoldenGate環境の初期化の詳細は、Oracle GoldenGateの管理の初期ロードによるOracle GoldenGateのインスタンス化を参照してください。
親トピック: Oracle GoldenGateシステムの準備
パラメータ・ファイルでのDB2 LUWデータベースの指定
Oracle GoldenGateプロセスを正しいDB2 LUWデータベースに接続するには、次のパラメータでDB2 LUWデータベースの名前(別名ではなく)を指定する必要があります。
-
Extractのパラメータ
SOURCEDB
でDB2ソース・データベースを指定します。 -
Replicatのパラメータ
TARGETDB
でDB2ターゲット・データベース名を指定します。
これらのパラメータの詳細は、Oracle GoldenGate Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。
親トピック: Oracle GoldenGateシステムの準備