データベース構成
キャプチャ用のデータベース・ソフトウェア
Oracle GoldenGateでは、PostgreSQLデータベースからキャプチャするためには、そのデータベースにtest_decoding
データベース・プラグインがインストールされている必要があります。このプラグインは、データベースのインストール時にデフォルトでインストールされていない場合があります。
次の例で示すように、postgresqlversion#-contrib
パッケージがデータベース・サーバーにインストールされていることを確認してください。
sudo yum install postgresql14-contrib
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およびPostgreSQLのAmazon RDSの場合、データベース設定はパラメータ・グループ内で変更されます。
新しいパラメータ・グループ内のデータベース設定を編集し、データベース・インスタンスに割り当てる方法の詳細は、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を参照してください。