※ 本記事は、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を追加します。:

Third Party JDBC Drivers
サード・パーティJDBCドライバ

 

Choose your .jar driver
.jarドライバの選択

また、PostgreSQL接続を作成するオプションが表示されるため、ソース・データベースへの接続を作成します:

Add your PostgreSQL connection to SQL Developer
SQL DeveloperへのPostgreSQL接続の追加

ヒントを1つ。ユーザー名がデータベース名と異なる場合は、これを使用してホスト名 ip:port/database_name に接続文字列を作成しますか?

ソースはこちら

ターゲット・データベースへの接続を作成します。ここでは、ターゲット・スキーマを使用して接続を作成することが重要です。

接続が確立したので、ddlをOracleにコピーできます。複数のDDLを一度にコピーし、目的の表を選択して右クリックし、「Copy to Oracle」オプションに移動することもできます。:

Copy to Oracle Function
Copy to Oracle ファンクション

宛先を選択し、「Copy Data」オプションの選択を解除します。ここでは、GoldenGateを使用します:

Copy DDL to Oracle
DDLのOracleへのコピー

 

すべてがうまくいった場合は、Oracle Databaseに表が表示され、構造と元の構造を比較できます。

Compare source and target
ソースとターゲットの比較

このプロシージャは、順序や索引など、表に必要なすべてのものを作成します。

一貫性のある初期ロードの実行

GoldenGate 21.8以降、GoldenGateのみを使用して一貫性のある初期ロードを実行できます。ここでは詳細なドキュメントを参照できますが、ステップは非常に簡単です。:

  • CDC Extract(ex_cdc)の登録

Register Extract
抽出の登録
  • 初期ロード抽出の実行(ex_ini)

Initial Load Extract
初期ロード抽出

 

Extract Parameters
抽出パラメータ

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」を選択します

Using the existing slot
既存のスロットの使用

Extract

Action」→「Details」→「Start Withオプションを編集し、取得したLSNを編集します。:

LSN
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つはレプリケーションの実行中に実行されます。

Distribution paths
配布パス

レプリケート

GoldenGate Oracleデプロイメントに証跡があるため、レプリカを構成できます。まず、初期ロード・トレールを読み取るReplicatを作成し、次にcdcトレイルを読み取るReplicatを作成する必要があります。:

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統計を初期ロード抽出と比較します。:

Statistics

 


 

Initial Load stats
IL統計

実行後、replicatを停止して削除します。

CDC証跡のreplicatの作成


 

-



 

CDC Stats
CDC統計

 

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