※ 本記事は、Adriano Tanakaによる”PostgreSQL to Autonomous Database replication using GoldenGate“を翻訳したものです。
2023年6月9日
Oracle GoldenGateの最適な機能の1つは、異機種間レプリケーション(異なるソースおよびターゲット・テクノロジ)の機能です。この投稿では、PostgreSQLからOracle Autonomous Databaseへの初期ロードおよびCDCの実行方法を示します。
環境には、次のものがあります。:
- OCI GoldenGate for PostgreSQL version 21.9.0.0.3
- ソース・データベース: PostgreSQL 12.13
- ターゲット・データベース: Autonomous Transaction Processing (ATP)
- SQL Developer 23.1
サービスのデプロイ方法や接続の作成方法などを知りたい場合は、Julienによって書かれたこの素晴らしい記事に従ってください。
ターゲットの準備
初期ロードを実行する前に、ATPでオブジェクトを作成する必要があります。そのため、SQL Developerの「Copy to Oracle」という非常に優れた機能を使用します。SQL Developerでは、ソースPostgreSQL用の接続とATPターゲット用の接続を2つ作成する必要があります。
PostgreSQLへの接続を作成するには、PostgreSQL JDBCをダウンロードする必要があります。このディレクトリにファイルを置くと、簡単に見つけることができます。SQL Developerで「Tools」→「Preference」→「Database」→「Third Party JDBC Drivers」に移動して、ダウンロードしたlibを追加します。:
また、PostgreSQL接続を作成するオプションが表示されるため、ソース・データベースへの接続を作成します:
ヒントを1つ。ユーザー名がデータベース名と異なる場合は、これを使用してホスト名 ip:port/database_name に接続文字列を作成しますか?
ソースはこちら
ターゲット・データベースへの接続を作成します。ここでは、ターゲット・スキーマを使用して接続を作成することが重要です。
接続が確立したので、ddlをOracleにコピーできます。複数のDDLを一度にコピーし、目的の表を選択して右クリックし、「Copy to Oracle」オプションに移動することもできます。:
宛先を選択し、「Copy Data」オプションの選択を解除します。ここでは、GoldenGateを使用します:
すべてがうまくいった場合は、Oracle Databaseに表が表示され、構造と元の構造を比較できます。
このプロシージャは、順序や索引など、表に必要なすべてのものを作成します。
一貫性のある初期ロードの実行
GoldenGate 21.8以降、GoldenGateのみを使用して一貫性のある初期ロードを実行できます。ここでは詳細なドキュメントを参照できますが、ステップは非常に簡単です。:
-
CDC Extract(ex_cdc)の登録
-
初期ロード抽出の実行(ex_ini)
INITIALLOADOPTIONS USESNAPSHOTパラメータを初期ロード抽出に追加する必要があります。初期ロードの実行後、レポート・ファイルに進み、LSN番号をメモします。CDC抽出を作成するには、このパラメータが必要です
2023-06-01 18:15:40 INFO OGG-05379 Create or position a Change Data Capture Extract to LSN 3/56090FA8. Example: ADD EXTRACT <extract-name> TRANLOG LSN 3/56090FA8 or ALTER EXTRACT <extract-name> LSN 3/56090FA8.
-
最初のCDC抽出(ex_cdc)の名前でCDC抽出を作成して実行します。:
LSN番号を手元に持って、先頭と同じ名前のCDC抽出を作成し、「Begin None」を選択します

「Action」→「Details」→「Start With」オプションを編集し、取得したLSNを編集します。:
レポートでは、スロットの使用状況を確認できます。:
2023-06-01 18:21:36 INFO OGG-25376 Oracle GoldenGate capture 'EX_CDC' running with replication slot 'ex_cdc_b0ee42471692bd61', slot type 'logical', plugin name as 'test_decoding' attached with database 'ociggll' with slot restart LSN as '3/560908D8', flush LSN as '3/56090910' and its current TXID as '260787'.
配布パス
ディストリビューション・パスを使用すると、デプロイメント間で証跡を移動できます。さらに詳しい情報が必要な場合には、以前、ここにコメントされています。
2つのディストリビューションを作成します。1つは初期ロード証跡を送信し、もう1つはCDC証跡用に、1つは1回のみ使用され、もう1つはレプリケーションの実行中に実行されます。
レプリケート
GoldenGate Oracleデプロイメントに証跡があるため、レプリカを構成できます。まず、初期ロード・トレールを読み取るReplicatを作成し、次にcdcトレイルを読み取るReplicatを作成する必要があります。:

My replicat parameter is very simple, I'm only mapping from public user to target_psql schema: REPLICAT PSQL_ini USERIDALIAS dbworld_atp_destino DOMAIN OracleGoldenGate MAP public.*, TARGET target_psql.*;
replicat統計を初期ロード抽出と比較します。:

実行後、replicatを停止して削除します。
CDC証跡のreplicatの作成

PostgreSQLからOracleへのレプリケーションが機能するようになりました。
