この章では、Oracle GoldenGateのためにシステムを準備する方法について説明します。
この章の内容は次のとおりです。
DML操作を取得するため、Oracle GoldenGateではデフォルトでDB2 for LUWオンライン・ログを読み取りますが、オンライン・ログを使用できない場合は、アーカイブ・ログを読み取ります。Oracle GoldenGateの処理の継続性と整合性を確実にするため、ログを次のように構成します。
データベースのバージョンに応じて次のパラメータ・セットのいずれかを有効にすることで、ロールフォワード・リカバリ用にトランザクション・ログを保持するようにデータベースを構成します。
DB2 LUW 9.5以上:
LOGARCHMETH
パラメータを次のように設定します。
LOGARCHMETH1
をLOGRETAIN
に設定します。
LOGARCHMETH2
をOFF
に設定します。
また、フォワード・リカバリが有効であるかぎり、他のLOGARCHMETH
オプションを使用できます。たとえば、次のものは有効です。
LOGARCHMETH1
をDISK
に設定します。
LOGARCHMETH2
をTSM
に設定します。
ログ保存パラメータを判別する手順:
データベースに接続します。
db2 connect todatabase
userusername
usingpassword
データベース名を取得します。
db2 list db directory
データベースのデータベース構成を取得します。
db2 get db cfg for database
確認するフィールドは次のとおりです。
Log retain for recovery status = RECOVERY User exit for logging status = YES
ログ保存パラメータを設定する手順:
次のコマンドのいずれかを発行します。
USEREXIT
を有効にする場合は、次を使用します。
db2 update db cfg for database
using USEREXIT ON
USEREXIT
を使用しない場合は、このコマンドを使用します。
db2 update db cfg for database
using LOGRETAIN RECOVERY
LOGARCHMETH
を設定するには、次のようにします。
db2 update db cfg fordatabase
using LOGARCHMETH1 LOGRETAIN db2 update db cfg fordatabase
using LOGARCHMETH2 OFF
次のコマンドを発行して、データベースの完全バックアップを作成します。
db2 backup dbdatabase
todevice
DB2 LUWがアクセス権を持つディレクトリにバックアップを配置します。次のメッセージが表示された場合は、システム管理者に連絡してください。
SQL2061N An attempt to access media "device" is denied.
DB2のOVERFLOWLOGPATH
パラメータをアーカイブ・ログ・ディレクトリに設定します。ノードは、指定したパス変数に自動的にアタッチされます。
db2 connect todatabase
db2 update db cfg using overflowlogpath "path
"
ノード自体をパスから除外します。たとえば、アーカイブ・ログ・ディレクトリへのフルパスが/sdb2logarch/oltpods1/archive/OLTPODS1/NODE0000
である場合、OVERFLOWLOGPATH
値は、/sdb2logarch/oltpods1/archive/OLTPODS1
として指定します。
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では、レプリケートされた更新や削除に対応する正しいターゲット行を検出するために、ソース表およびターゲット表で特定の形式の一意の行識別子が必要です。
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 Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。
Oracle GoldenGateで表のデータの抽出が開始された後で、キーに列を追加しないでください。このルールは、主キー、一意キー、KEYCOLS
キー、またはすべての列キーに適用されます。DB2 LUWでは、表に追加される列の変更前イメージは提供されません。ソースでキー内の列が更新された場合、Oracle GoldenGateでは更新のレプリケートの際、ターゲット表の現在の値と比較するために変更前イメージが必要になります。
CREATE TABLE
およびALTER TABLE
コマンドのDATA CAPTURE CHANGES
機能で提供される拡張形式でデータの変更が記録されるよう、DB2を構成します。この形式により、Oracle GoldenGateでは、UPDATE文によって変更された行の変更前イメージと変更後イメージの全体を使用できます。GGSCIを使用して、次のようにALTER TABLE
コマンドを発行できます。
GGSCIからの変更の取得を有効にする手順:
Oracle GoldenGateディレクトリからGGSCIを実行します。
ALTER TABLE
権限を持つユーザーとしてGGSCIからDB2にログオンします。SOURCEDB
でデータソース名を、USERID
およびPASSWORD
でユーザー・ログインを指定します。必要に応じて、暗号化オプションについてOracle GoldenGate Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。
DBLOGIN SOURCEDBdsn
, USERIDuser
[, PASSWORDpassword
]
次のコマンドを発行します。owner.table
は表の完全修飾名です。ワイルドカードを使用して複数の表の名前を指定できます。DB2 LUWではアスタリスク(*)ワイルドカードのみサポートされます。
ADD TRANDATA owner.table
ADD TRANDATA
により次のコマンドが発行されます。これには、LONGVAR
列の変更前イメージのロギングが含まれます:
ALTER TABLE name
DATA CAPTURE CHANGES INCLUDE LONGVAR COLUMNS;
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
文に含めないでください。
TABLE
およびMAP
文では、MQT名を通常の表名とともに解決できますが、ワイルドカードを使用できます。Oracle GoldenGateでは、MQTはワイルドカードを使用した表リストから自動的に除外されます。ただし、ExtractのTABLE
文でMQTを名前によって明示的にリストすると、Extractが異常終了する原因となります。
ソースおよびターゲット・データベース間のキャラクタ・セットの変換をサポートするには、セッション・キャラクタ・セットがデータベース・キャラクタ・セットと同じであることを確認します。DB2CODEPAGE
環境変数を使用してセッション・キャラクタ・セットを設定できます。
Oracle GoldenGate環境の初期化の際、最初のデータ同期を行い、Oracle GoldenGateプロセスを初めて起動します。これらの手順とともに、プロセス・グループを作成します。Extractグループを作成するには、トランザクション・ログで最初の開始位置を確定する必要があります。この初期読取位置は、次のいずれかに基づくトランザクション境界上に置かれます。
トランザクション・ファイルの終わり
特定のLSN値
開始ポイントは、ADD EXTRACT
コマンドのBEGIN
オプションで指定します。
Extractを初めて起動すると、指定した開始ポイントの後に発生したすべてのトランザクション・データが取得されますが、開始ポイントより前に発生したデータは取得されません。このため、オープン・トランザクションが開始ポイントをまたがる場合、トランザクションの一部しか取得されないことがあります。
初期トランザクションの一貫性を確保する手順:
トランザクションの部分的な取得を避けるには、データベースが停止している時点でExtractプロセスを初期化します。DB2では、そのような目的でQUIESCE
コマンドが提供されています。これがトランザクションの一貫性を確保する唯一の方法です。
注意: Extractを初期化した後の再起動では、プロセスはリカバリ・チェックポイントを使用して最終読取り位置をマークするため、トランザクションの一部は抽出されません。 |
オープン・トランザクションを表示する手順:
IBMでは、DB2データベースおよびインスタンスを監視するためのdb2pd
というユーティリティを提供しています。これを使用して、オープン・トランザクションに関する情報を表示したり、開始ポイントをまたぐトランザクションがないかを判別できます。ただし、DB2 LUWのログ・レコードにはタイムスタンプがないため、正確な判断はできません。可能な場合は、Oracle GoldenGateを初期化する前にデータベースを停止します。
Oracle GoldenGate環境の初期化の詳細は、Oracle GoldenGate Oracle GoldenGateの管理for Windows and UNIXを参照してください。
Oracle GoldenGateプロセスを正しいDB2 LUWデータベースに接続するには、次のパラメータでDB2 LUWデータベースの名前(別名ではなく)を指定する必要があります。
ExtractのパラメータSOURCEDB
でDB2ソース・データベースを指定します。
ReplicatのパラメータTARGETDB
でDB2ターゲット・データベース名を指定します。
これらのパラメータの詳細は、Oracle GoldenGate Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。