ExtractプロセスおよびReplicatプロセスを追加する前に
Oracle GoldenGateデプロイメントのExtractプロセスおよびReplicatプロセスを作成する前に必要な前提条件の構成について学習します。
TRANDATAの追加
Db2 for i、Db2 LUW、Db2 z/OS、Oracle、PostgreSQL、SQL ServerおよびSybaseに有効です。
ソース・データベースに応じて、サプリメンタル・ロギングは、DML操作を取得するために有効にする必要があり、Webインタフェースのデータベース接続の「Trandata」メニューから、またはADD TRANDATAかADD SCHEMATRANDATA (Oracleのみ)を発行して管理クライアントで有効化できます。
初期ロードExtractのソース・データベースでは、TRANDATAの追加は不要です。ただし、オンライン・インスタンス化のために、初期ロードExtractとチェンジ・データ・キャプチャ(CDC) Extractの両方を同時に使用する場合は、初期ロードExtractを開始する前にTRANDATAを追加する必要があります。
Oracle AI DatabaseのTRANDATAまたはSCHEMATRANDATAの有効化
これは、表、スキーマまたはグローバル(データベース)レベルで実行できます。
サプリメンタル・ロギングを有効にするには、「DB接続」ページからデータベースに接続し、「Trandata」メニューを選択して、次のステップを実行します。
-
必要に応じて「表」または「スキーマ」オプションを選択し、プラス記号をクリックして追加します。
-
サプリメンタル・ロギングを設定する必要がある表の名前を入力します。スキーマ名を含む完全な表名(
HR.EMPなど)を入力してください。特定の表名のかわりにワイルドカードを使用することもできます。 -
「発行」をクリックします。
CDCなしの初期ロードの場合は、ADD TRANDATAをスキップできます。
トランザクション・データおよびスキーマ・レベルのトランザクション・データの設定には、コマンドADD TRANDATAおよびADD SCHEMATRANDATAも使用できます。
ノート: ADD TRANDATAコマンドを実行する前に、DBLOGINコマンドを使用して、Extractが追加されるデータベースに接続する必要があります。また、Extractを追加する前に、ADD TRANDATAまたはADD SCHEMATRANDATAコマンドを実行します。
Oracle以外のデータベースのTRANDATAの有効化
Db2 i、Db2 LUW、Db2 z/OS、PostgreSQL、SQL ServerおよびSybaseに有効です。
これは、表またはグローバル(データベース)レベルで実行できます。サプリメンタル・ロギングを有効にするには、「DB接続」ページからデータベースに接続し、「Trandata」メニューを選択して、次のステップを実行します。
-
「表」オプションを選択し、プラス記号をクリックして追加します。
-
サプリメンタル・ロギングを設定する必要がある表の名前を入力します。完全な表名(
EMPLOYEEなど)を入力してください。特定の表名のかわりにワイルドカードを使用することもできます。 -
「発行」をクリックします。
Db2 for iの変更の取得を有効にする手順
表に対する変更をジャーナルに取得するには、IBM iコマンドラインでSTRJRNPFコマンドを実行するか、Admin ClientからADD TRANDATAコマンドを実行します。ADD TRANDATAコマンドはSTRJRNPFを呼び出す、表のジャーナル処理を開始する推奨メソッドです。STRJRNPFコマンドでレコード・イメージ (IMAGES): *BOTHの必要なジャーナル・イメージ属性が確実に設定されるためです。
ADD TRANDATAコマンドは次のとおりです。
ADD TRANDATA table_specification
説明: table_specificationは次のいずれかです。
-
*schema.table* [JOURNAL *library/journal*]
-
*library/file* [JOURNAL *library/journal]*)
デフォルト・ジャーナンの指定
ADD TRANDATAコマンドで複数の表またはファイルに対してデフォルト・ジャーナルを指定するには、JOURNALキーワードを指定するかわりに、ADD TRANDATAを発行する前に次のコマンドを使用します。
DEFAULTJOURNAL *library/journal*
ジャーナルを指定せずに使用されたADD TRANDATAでは、DEFAULTJOURNALのジャーナルが想定されます。
DEFAULTJOURNALの現在の設定を表示するには、引数なしでコマンドを発行します。
デフォルト・ジャーナルの指定の削除**
デフォルト・ジャーナルの使用を削除するには、次のコマンドを使用します。
DEFAULTJOURNAL CLEAR
Db2 LUWの変更の取得を有効にするには
DATA CAPTURE CHANGESおよびCREATE TABLEコマンドのALTER TABLE機能で提供される拡張形式でデータの変更が記録されるよう、Db2を構成します。この形式により、Oracle GoldenGateでは、UPDATE文によって変更された行の変更前イメージと変更後イメージの全体を使用できます。ALTER TABLEコマンドを次のように実行します。
次のコマンドを発行します
ADD TRANDATA owner.table
owner.tableは表の完全修飾名です。ワイルドカードを使用して複数の表名を指定できます。
ADD TRANDATAにより次のコマンドが発行されます。これには、LONGVAR列の変更前イメージのロギングが含まれます:
ALTER TABLE name DATA CAPTURE CHANGES INCLUDE LONGVAR COLUMNS;
例7-1 LONGVARロギングを除外する手順:
ALTER TABLEコマンドからINCLUDE LONGVAR COLUMNS句を省略するには、EXCLUDELONGオプション付きでADD TRANDATAを使用します。
ADD TRANDATA *owner.table*, EXCLUDELONG
ノート: LONGVAR列をロギングから除外した場合、変更前イメージを必要とするOracle GoldenGateの機能(GETUPDATEBEFORES、NOCOMPRESSUPDATESおよびNOCOMPRESSDELETESパラメータなど)は、表にこれらの列が含まれている場合、エラーが返される場合があります。回避策については、TRANLOGOPTIONSパラメータのREQUIRELONGDATACAPTURECHANGES | NOREQUIRELONGDATACAPTURECHANGESオプションを参照してください。
チェックポイント表の追加
チェックポイント表は、パラレルでないすべてのReplicatに必要で、Replicatを追加する前にデータベースに作成する必要があります。チェックポイントがトランザクションで成功または失敗するため、プロセスまたはデータベースで障害が発生した場合でも、Replicatによってトランザクションが一度のみ適用されることが保証されます。
チェックポイント表は、チェックポイント・セクション内で表示できます。チェックポイント表を追加するには、「DB接続」ページからターゲット・データベースに接続して、「チェックポイント」を選択して、次のステップに従います:
-
プラス記号をクリックして、チェックポイント表の追加を有効にします。
-
チェックポイント表名を次の形式で追加します
*table*.*checkpoint_table_name* -
「発行」をクリックします。チェックポイントが作成されると、チェックポイント表のリストに表示されます。
コマンド・ラインからこのタスクを実行するには、Oracle GoldenGateコマンド・ライン・インタフェース・リファレンスのADD CHECKPOINTTABLEを参照してください。
Db2 for iでのジャーナルを含むチェックポイント表の追加
iターゲット・データベースのDb2では、チェックポイント表に書き込まれる各チェックポイントをReplicatトランザクション内でジャーナル化する必要があります。
ジャーナル処理を指定してチェックポイント表を作成する一般的な方法は、次のとおりです。
-
ターゲット・システムで、Replicatチェックポイント・ファイルを作成します。
チェックポイント・ファイルに使用されるジャーナル名を設定します。デフォルトは
GGSCHEMA/OGGJRNです。これは、
DEFAULTJOURNALコマンドを使用して現在の管理クライアント・セッションのデフォルトを設定することで変更できます。DEFAULTJOURNALコマンドの構文は次のとおりです。DEFAULTJOURNAL *library_name*/*journal_name*説明: library_nameはライブラリの名前で、
journal_nameは、オプションでジャーナルを指定できる後続の操作に使用されるジャーナルの名前です。 -
チェックポイント表を追加します。
ADD CHECKPOINTTABLE *library_name*.chkptab -
チェックポイント表にジャーナル処理を追加します。
ADD TRANDATA *library_name*.CHKPTAB
チェックポイント表の作成の詳細は、「チェックポイント表の追加」を参照してください。
ハートビート表の追加
ハートビート表は、データ・レプリケーション・サイクル全体のラグをモニターするために使用されます。自動ハートビートは、ハートビート・シード表およびハートビート表のレコードを更新し、ハートビート履歴レコードを構築することにより、各ソース・データベースからレプリケーション・ストリームに送信されます。
レプリケーション・ストリーム内の各プロセスでは、ハートビート・レコードがトラッキング情報で更新され、その後、ターゲット・データベースのハートビート表で更新されます。これらのハートビート・レコードは、ターゲット・データベースでハートビート表に挿入されるか、更新されます。
ノート:ハートビート表の作成はオプションですが、推奨されます。
ハートビート表を追加するには、「DB接続」ページから各ソースおよびターゲット・データベースに接続し、「ハートビート」メニューを選択してから、次のステップを実行します。
-
ハートビート表を追加するには、横にあるプラス(+)記号をクリックします。
-
デフォルト設定を受け入れるか、使用可能な値を必要に応じて変更します。
ノート: 「ターゲットのみ」のオプションを持つデータベースの場合は、ソース・データベースに関連付けられた不要なジョブが生成されないように、そのデータベースをレプリケーション・ストリームのターゲット・データベースとしてのみ使用する場合、このオプションを選択します。
-
「発行」をクリックします。
コマンド・ラインからこのタスクを実行し、データベース固有の重要な制限を確認するには、『Oracle GoldenGateコマンド・ライン・インタフェース・リファレンス』のADD HEARTBEATTABLEを参照してください。
次のステップでは、ハートビート表を設定するコマンドについて説明します。
-
コマンドラインから管理クライアントを起動します。
-
管理クライアントからデプロイメントに接続します。
CONNECT https://remotehost:*srvmgrport* DEPLOYMENT *deployment_name* AS *deployment_user* PASSWORD *deployment_password*次に例を示します:
CONNECT https://remotehost:16000 DEPLOYMENT *ggdep_postgres* AS ggadmin PASSWORD P@ssWord -
DBLOGIN USERIDALIASコマンドを使用して、ソース・データベースおよびターゲット・データベースに接続します。次の例は、資格証明別名ggeastを持つソース・データベースへの接続を示しています。(https://remotehost:16000 ggdep_postgres)> DBLOGIN USERIDALIAS ggeast -
ハートビート表を追加します。
(https://remotehost:16000 ggdep_postgres)> ADD HEARTBEATTABLE
オプションで、一方向レプリケーションにのみ使用されるターゲット専用データベースの場合、ハートビート・レコード更新関数が作成されないTARGETONLYオプションを含めることができます。
コマンド・オプションの詳細は、「ADD HEARTBEATTABLE」を参照してください。
PostgreSQLに対するハートビート更新関数およびパージ関数の実行
Oracle GoldenGate for PostgreSQLではハートビート表構成がサポートされており、更新およびパージのタスクに関していくくつかの制限事項があります。
ハートビート表および関連する関数はADD HEARTBEATTABLEコマンドから作成されますが、PostgreSQLの場合、関数をコールする自動スケジューラはありません。
1つの主要な関数によって、ハートビート・レコード更新ファンクションとハートビート履歴表パージ関数の両方が制御される。これら両方の機能のデフォルト設定は、更新頻度は60秒、履歴レコードのパージが1日となり、デフォルトでは、30日前より古いすべてのレコードが削除されます。
メインのハートビート・レコード関数を呼び出すには、次を実行するオペレーティング・システム・レベルのジョブを作成する必要があります
"select ggschema.gg_hb_job_run();"
この関数がコールされると、更新頻度設定と履歴レコードのパージ設定が考慮され、関数コールのスケジューラ設定に関係なく、これらの値が使用されます。
たとえば、ユーザーは次の構文を使用してCronジョブを作成し、それを1分ごとに実行できます。
PGPASSWORD="gguserpasswd" psql -U gguser -d dbname -h remotehost -p 5432 -c "select ggschema.gg_hb_job_run();" >/dev/null
2>&1
Windowsタスク・スケジューラ、pgAdminまたはpg_cronは、関数コールをスケジュールするために使用できるその他のプログラムである。
Oracle GoldenGate CDCクリーン・アップ・タスクの作成
SQL Serverユーザーの場合、Extractを追加する前にOracle GoldenGate CDCクリーン・アップ・タスクを作成する必要があります。これを行うには、Oracle GoldenGate CDCクリーン・アップ・プロセスの詳細のステップを実行します
PostgreSQL: リモート・デプロイメントに関するExtractの考慮事項
リモート・デプロイメントの場合、ソース・データベースとOracle GoldenGateは個別のサーバーにインストールされます。リモート・デプロイメントは、クラウド・データベース(Azure for PostgreSQLやAmazon Aurora PostgreSQLなど)をサポートするために使用可能な唯一のオプションです。
リモート・デプロイメントの場合、データベース・サーバーとOracle GoldenGateサーバーの間のオペレーティング・システムのエンディアンネスは同じである必要があります。
Oracle GoldenGateサーバーのサーバー時間とタイムゾーンはデータベース・サーバーのものと同期する必要があります。これができない場合は、Extractの作成時または変更時の位置指定をLSIによって実行する必要があります。
リモート・キャプチャの使用例では、SQLEXECを使用するとさらにレイテンシが発生する場合があります。 これは、Extractが処理するレコードごとに、SQLEXEC操作を順番に実行する必要があるからです。SQLEXECを必要とする特別なフィルタリングはリモートのハブExtractによって実行され、パフォーマンスへの影響が大きすぎる場合は、Extractプロセスをソース・データベースに近づけることが必要になる場合があります。
リモート・デプロイメントでは、ネットワーク・レイテンシが低いことが重要であるため、Oracle GoldenGateサーバーとソース・データベース・サーバーの間のネットワーク・レイテンシは1ミリ秒未満にすることをお薦めします。