データベース構成
キャプチャ用のデータベース・ソフトウェア
PostgreSQLデータベースからキャプチャするには、Oracle GoldenGateでtest_decodingデータベース・ プラグインがデータベースにインストールされている必要があります。このプラグインは、データベースのインストール時にデフォルトでインストールされていない場合があります。
次の例で示すように、postgresqlversion#-contribパッケージがデータベース・サーバーにインストールされていることを確認してください。
sudo yum install postgresql14-contrib
PostgreSQLデータベース構成ファイル内のパラメータ
Oracle GoldenGateの場合、PostgreSQLデータベース構成ファイル$PGDATA/postgresql.confで次のパラメータを構成します。
ノート:これらの変更は、Oracle GoldenGateが取得するプライマリPostgreSQLデータベース、およびプライマリ・データベースに障害が発生した場合にOracle GoldenGateが取得する可能性のあるスタンバイ・データベースに対して必要です。
-
ExtractまたはReplicatのリモート接続の場合は、リモート・データベース接続を許可するようにPostgreSQL
listen_addressesを設定します。たとえば:listen_addresses=remotehost_ip_addressノート:
pg_hba.confファイルを構成して、Oracle GoldenGateホストからの接続を許可するようにクライアント認証が設定されていることを確認します。詳細は、次のドキュメントを参照してください: pg_hba.confファイル -
Oracle GoldenGate Extractをサポートするには、先行書込みロギングが
logicalに設定されている必要があり、これにより、トランザクション・レコードのデコードをサポートするために必要な情報が追加されます。最大レプリケーション・スロットの数は、Extractごとに1つのオープン・スロットを格納するように設定する必要があり、通常、データベースごとに1必要なExtractは1つのみです。たとえば、PostgreSQLネイティブ・レプリケーションがすでに使用されており、現在構成されているすべてのレプリケーション・スロットを使用している場合は、値を大きくしてExtractの登録を許可します。
最大先行書込み送信者は、最大レプリケーションスロット値と一致するように設定する必要があります。
オプションで、コミット・タイムスタンプを先行書込みログで有効にできます。これにより、論理先行書込みロギングが同時に有効になっている場合、その時点以降の最初のDMLコミット・レコードが正しいタイムスタンプ値で追跡されます。そうしない場合、Oracle GoldenGate取得で検出された最初のレコードに、正しくないコミット・タイムスタンプが含まれます。
wal_level = logical # set to logical for Capture max_replication_slots = 1 # max number of replication slots, # one slot per Extract/client max_wal_senders = 1 # one sender per max repl slot track_commit_timestamp = on # optional, correlates tx commit time # with begin tx log record (useful for # timestamp-based positioning) -
前述のいずれかの変更を行った後、データベースを再起動します。
次の手順を使用して、Azure for PostgreSQL、Amazon Aurora PostgreSQL、Amazon RDS for PostgreSQL、Google AlloyDB for PostgreSQLおよびGoogle Cloud SQL for PostgreSQLのデータベース設定を管理します。
Azure Database for PostgreSQL
Azure Database for PostgreSQLに対してOracle GoldenGate for PostgreSQL Extractを構成する場合、論理デコードを有効にしてLOGICALに設定する必要があります。
手順は、Microsoftのドキュメントを参照してください。
https://learn.microsoft.com/en-us/azure/postgresql/
Azure Database for PostgreSQLのその他のデータベース設定は、データベース・インスタンスの「Server parameters」セクションを使用して管理できます。
Azure Database for PostgreSQLインスタンスへの接続の場合、Azureのデフォルトの接続セキュリティ設定にはSSL接続が必要になります。この要件に従うには、Oracle GoldenGateとのSSL接続をサポートするための追加ステップが必要です。
詳細は、PostgreSQLのSSLサポートの構成に記載されている内容に従ってください。
Amazon Aurora PostgreSQLおよびAmazon RDS for PostgreSQL
Amazon Aurora PostgreSQLおよびAmazon RDS for PostgreSQLの場合、データベース設定はパラメータ・グループ内で変更されます。
新しいパラメータ・グループ内のデータベース設定を編集してそれをデータベース・インスタンスに割り当てる方法については、Amazon AWSのドキュメントを参照してください:
https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_WorkingWithParamGroups.html
-
前にリストしたデータベース構成設定が正しいことを確認するために、インスタンスに割り当てられているパラメータ・グループ内の設定を検証します。
-
Amazonデータベース・サービスの
wal_level設定はrds.logical_replicationというパラメータで構成され、そのデフォルトは0で、データベースがOracle GoldenGate Extractのソース・データベースとして使用される場合は1に設定する必要があります。 -
Amazon RDSでは、文字列
rdsを使用したレプリケーション・スロット名の先頭または開始はサポートされていません。レプリケーション・スロット名が文字列rdsで始まる場合、レプリケーション・スロットを作成するためにOracle GoldenGate Extractで使用されるコマンドはエラーを返します。たとえば、次の例に示すように、レプリケーション・スロットにrdscdcではなくordscdcという名前を付けて、このエラーを回避できます。select slot_name from pg_create_logical_replication_slot('ordscdc', 'test_decoding');このコマンドは、
ordscdcレプリケーション・スロットを追加します。ただし、レプリケーション・スロット名をrdscdcとして使用すると、次のエラーが発生します。ERROR: must be superuser or replication role to use logical replication slots in the 'rds' namespace
制限事項:
Amazon Aurora PostgreSQLバージョン12.17では、大文字のSHOWコマンドが実行されると、次のエラーが報告されます。
"ERROR: must be superuser or replication role to run this operation."
このエラーを回避するには、小文字のSHOWコマンドを使用する必要があります。
Google AlloyDB for PostgreSQL
Oracle GoldenGateリリース21.14以降、Oracle GoldenGateはGoogle AlloyDB for PostgreSQLをサポートしています。Google AlloyDB for PostgreSQLに対してOracle GoldenGate for PostgreSQLのExtractを構成する場合は、alloydb.logical_decoding configurationパラメータ(フラグ)をONに設定する必要があります。
Google Cloud SQL for PostgreSQL
Google Cloud SQL for PostgreSQLデータベース用にOracle GoldenGate for PostgreSQL Extractを構成する場合は、論理デコードを設定する必要があり、そのためにはcloudsql.logical_decoding変数をONに設定します。このデータベース・フラグを有効にする方法の手順は、Googleによって示されています。詳細は、https://cloud.google.com/sql/docs/postgres/flags#postgres-lを参照してください。