データベース接続の準備
Oracle GoldenGate for PostgreSQLのデータベース接続、システムおよびパラメータ設定の構成について学習します。
Oracle GoldenGate for PostgreSQLは、事前にパッケージ化されているODBCドライバを使用してPostgreSQLデータベースに接続します。接続は、データ・ソース名(DSN)を使用するか、直接接続を使用してデータベース・サーバーのホスト、ポート、データベースおよびその他の情報を提供することで確立できます。
DSN接続を使用する場合は、接続の詳細をodbc.ini
ファイルにリストする必要がありますが、直接エントリを使用する場合は、管理サービスのWebインタフェースまたは管理クライアントを介してデータベース接続を追加するときに手動で入力します。
ノート:
PgBouncer
は、Oracle GoldenGate接続ではサポートされていません。
ノート:
Oracle GoldenGateでは、Pgpool
を使用したPostgreSQLへの接続はサポートされていません。
次に示すステップを実行してDSNエントリを作成した後、または直接接続を使用する予定がある場合は、「データベース接続の追加」トピックに進み、データベース接続の作成方法を確認します。
LinuxでのDSN接続の構成
odbc.ini
ファイルを作成する必要があります。
-
サービス・マネージャのWebインタフェースにログインします。
-
左側のナビゲーション・ペインで、「デプロイメント」をクリックし、Oracle GoldenGate PostgreSQLデプロイメントを選択します。これにより、デプロイメントの様々な設定が展開されます。
-
「構成」をクリックし、「環境変数」の横にあるプラス記号(+)をクリックします。
-
使用可能な2つのフィールドに次の情報を入力します。「環境変数値」フィールドでは、
odbc.ini
ファイルの絶対パスであることを確認します。環境変数名 =
ODBCINI
環境変数値 =
/ogg/deployment/pgsql/odbc.ini
-
「発行」をクリックして新しい変数を作成し、変更を有効にするために「デプロイメント」ペインからデプロイメントを再起動します。
-
Oracle GoldenGateインストールの
deployment
フォルダで、odbc.ini
ファイルを手動で作成し、このファイルにデータ・ソースを追加します。
-
Data Source Name
- ExtractやReplicatなどのOracle GoldenGateプロセスによって参照される、ソースまたはターゲット・データベース接続のユーザー定義名。DSN名では、32文字までの英数字を使用でき、特殊文字としてはアンダースコア(_)とダッシュ(-)のみを使用できます。
-
IANAAppCodePage=4
- これがデフォルト設定ですが、データベース文字セットがUnicodeでない場合は、https://docs.progress.com/bundle/datadirect-connect-odbc-71/page/IANAAppCodePage_9.html#IANAAppCodePage_9のページで示されているガイダンスに従って変更できます。 -
InstallDir
– Oracle GoldenGate PostgreSQLワイヤ・プロトコル・ドライバ・パスの名前。InstallDir =./datadirect
のように相対パスを使用できます。 -
Driver
: Oracle GoldenGate PostgreSQLワイヤ・プロトコル・ドライバ・ファイルの名前。Driver=./datadirect/lib/ggpsql25.so
のように相対パスを使用できます。 -
Database
: ソース・データベースまたはターゲット・データベースの名前。 -
Hostname
: データベース・ホストのIPアドレスまたはホスト名。 -
PortNumber
: データベースのリスニング・ポート。 -
Oracle GoldenGate for PostgreSQLでは、PostgreSQL接続での複数のホストおよびポートがサポートされています。この機能は、Oracle GoldenGate High Availability (HA)設定で役立ちます。PostgreSQL HA設定においては、1つのプライマリ・サーバーと複数のスタンバイ・サーバーがあります。接続文字列フォーマットで複数のホストを指定できます:
接続文字列 説明 db-user@host1,host2,host3/db-name
接続は、すべてのホスト( host1
、host2
、host3
)にデフォルトのPostgreSQLデータベース・ポート5432を使用して試みられます。db-user@
host1:1234
,host2:2345,host3:3456/db-name接続は、接続文字列で指定されている各ホストに関連付けられたポートを使用して試みられます。 db-user@host1,host2,host3:1234/db-name
すべてのホスト( host1
、host2
、host3
)で同じポート番号(1234)を使用します。接続は、すべてのホスト(host1
、host2
、host3
)にポート1234を使用して試みられます。db-user@host1,host2,host3:1234/db-name
すべてのホスト( host1
、host2
、host3
)で同じポート番号(1234)を使用します。接続は、すべてのホストにポート1234を使用して試みられます。db-user@host1:3456,host2,host3:1234/db-name
接続文字列が他の形式で指定されており、一部のホストにポート番号が指定され、他のホストがポートなしで指定されている場合は、その接続文字列でポート番号が指定されていないホストすべてに対するポート番号として、最後または右端のポート指定が使用されます。たとえば、次のような接続文字列です:
db-user@host1:3456,host2,host3:1234/db-name
host2
のポート番号は1234になります。これは、接続文字列で指定されている右端のポート番号です。 -
ExtractまたはReplicatユーザーの
LogonID
とPassword
を指定することもできますが、これらはクリア・テキストで格納されます。これらのフィールドは、DSNに含めずに、かわりにOracle GoldenGateウォレットに資格証明別名として格納し、ExtractおよびReplicatでUSERIDALIAS
パラメータを使用してそれらを参照することをお薦めします。
次に、2つのDSNエントリを含むodbc.ini
ファイルの例を示します。次の例で使用されているデータ・ソース名は、PG_src
とPG_tgt
です。
|
|
|
-
odbc.ini
ファイルを保存して閉じます。 -
PostgreSQLデプロイメント用にOracle GoldenGateからデータベース接続を設定するには、「データベース接続の追加」を参照してください。
バージョン14未満のFIPS対応のPostgreSQLシステムへの接続
Oracle GoldenGate Extractが、バージョン14未満のPostgreSQLデータベースとともにインストールされたFederal Information Processing Standards (FIPS)対応システムから実行されると、次のエラーが生成されます。
ERROR OGG-25359 Could not connect to server with database 'postgres', host 'localhost', port '5432' and user name 'postgres'. Error Message: connection to server at "localhost" (::1), port 5432 failed: could not encrypt password: disabled for FIPSfe_sendauth: error sending password authentication.
暗号化アルゴリズムmd5
は、PostgreSQLデータベース・バージョンが14未満のデフォルト暗号化アルゴリズムであり、Extractがエラーで異常終了します。
14未満のPostgreSQLデータベース・バージョンを実行しているFIPS対応システムでExtractを実行するには、次のステップを実行します。
-
postgresql.conf
ファイルを変更して、password_encryption
オプションをscram-sha-256
に設定します。 -
md5
はFIPS対応システムではサポートされていないため、pg_hba.conf
ファイルを変更してMethod
オプションをscram-sha-256
に設定します。ただし、これはオプションのステップです。Oracle GoldenGate Extractで使用されるデータベース・ユーザーのパスワードは、
password_encryption
オプションをscram-sha-256
に設定した後で、データベース・ユーザーがすでに作成されている場合は再生成または変更する必要があります。同じパスワードを使用して再生成できます。たとえば、
admin
という名前のデータベース・ユーザーがpassword123
としてパスワードを使用する場合、scram-sha-256
暗号化を使用して同じパスワードを再生成できます。
PostgreSQLのSSLサポートの構成
SSLを有効にするには、PostgreSQL構成ファイル($PGDATA/postgresql.conf
)で構成パラメータSSLをonに設定します。SSLが有効である場合、対応するhostssl
エントリがpg_hba.conf
ファイル内に存在するか追加されている必要があります。
SSLが有効である場合、Oracle GoldenGateは次のスニペットに示すように、ルート証明書、ルート証明書失効リスト(CRL)、サーバー・クライアント証明書およびキーをデフォルトの場所から使用します。
~/.postgresql/root.crt
~/.postgresql/root.crl
~/.postgresql/postgresql.crt
~/.postgresql/postgresql.key
このリストから目的のエンティティを作成し、適切な場所に格納する必要があります。
デフォルト以外の場所を使用してSSL構成を設定する場合、次の環境変数を環境ごとに設定する必要があります。
PGSSLROOTCERT
PGSSLCRL
PGSSLCERT
PGSSLKEY
odbc.iniファイルに必要な変更
SSLサポートは、$ODBCINI
ファイルでEncryptionMethod DSN
属性を1または6に設定することにより有効にできます。
0 (暗号化なし)に設定すると、データは暗号化されません。
1 (SSL)に設定すると、「Crypto Protocol Version」接続オプションで指定されたSSLプロトコルを使用してデータが暗号化されます。指定された暗号化方法がデータベース・サーバーでサポートされていない場合は、接続に失敗してエラーが返されます。
6 (RequestSSL)に設定すると、サーバーがSSL用に構成されていれば、ログイン・リクエストおよびデータはSSLを使用して暗号化されます。サーバーがSSL用に構成されていない場合は、暗号化されていない接続が確立されます。使用するSSLプロトコルは、「Crypto Protocol Version」接続オプションの設定によって決まります。
データベース・サーバー/クライアントの証明書も検証する必要がある場合は、対応するKeyStoreファイルを作成し、次に示すODBC DSN属性をodbc.ini
ファイル内で適宜設定する必要があります。
KeyStore=path to .p12 keystore file KeyStorePassword=keystore-passwd TrustStore=path to root certificate ValidateServerCertificate=1
ただし、SSLCertとSSLKeyがすでに指定されている場合、KeyStoreファイルは、クライアント証明書の検証(サーバーによって実行される)のために必須ではありません。
ノート:
Azure Database for PostgreSQLは、デフォルトでSSL接続を強制します。この要件に従うには、ここにリストされている要件を実行するか、またはオプションで、Microsoft Azure Portalを使用して、データベース・インスタンスの接続セキュリティ設定からSSL接続の強制を無効にできます。