准备数据库连接

了解如何配置 Oracle GoldenGate for PostgreSQL 的数据库连接、系统和参数设置。

Oracle GoldenGate for PostgreSQL 使用预打包的 ODBC 驱动程序连接到 PostgreSQL 数据库。可以使用数据源名称 (Data Source Name,DSN) 或直接连接来建立连接,并提供数据库服务器主机、端口、数据库和其他信息。

使用 DSN 连接需要将连接详细信息列在 odbc.ini 文件中,而使用直接条目是在将数据库连接添加到管理服务的 Web 界面或通过管理客户机时手动输入的。

注:Oracle GoldenGate 连接不支持 PgBouncer。

注:Oracle GoldenGate 不支持连接到使用 Pgpool 的 PostgreSQL。

执行下面给定的步骤以创建 DSN 条目或计划使用直接连接后,请转到添加数据库连接主题以了解如何创建数据库连接。

在 Linux 中配置 DSN 连接

要为 Oracle GoldenGate 进程创建 DSN 连接,首先需要为 Oracle GoldenGate 添加环境变量以进行 PostgreSQL 部署,然后创建 odbc.ini 文件以存储连接属性。

  1. 登录到 Service Manager Web 界面。

  2. 从左侧导航窗格中,单击部署,然后选择 Oracle GoldenGate PostgreSQL 部署。这将扩展部署的各种设置。

  3. 单击 Configuration(配置),然后单击 Environment Variables(环境变量)旁边的加号 ( + )。

  4. 在两个可用字段中提供以下信息。对于环境变量值字段,请确保它是 odbc.ini 文件的绝对路径:

    环境变量名称 = ODBCINI

    环境变量值 = /ogg/deployment/pgsql/odbc.ini

    用于设置 PostgreSQL 的 odbc.ini 环境变量的 "Add Environment Variable"(添加环境变量)对话框。

  5. 单击提交以创建新变量,然后从部署窗格重新启动部署,以使更改生效。

  6. 在 Oracle GoldenGate 安装的 deployment 文件夹中,手动创建 odbc.ini 文件并在此文件中添加数据源。

创建 DSN 文件时,请使用以下最低设置:

下面是具有两个 DSN 条目的 odbc.ini 文件示例。以下示例中使用的数据源名称为 PG_src 和 PG_tgt。

 

#[ODBC Data Sources]

[ODBC]

IANAAppCodePage=4

InstallDir=/datadirect

 

[PG_src]

Driver= ./datadirect/lib/ggpsql25.so

Description=Oracle GoldenGate PostgreSQL Wire Protocol

Database=sourcedb

HostName=remotehost

PortNumber=5432

 

| — |

[PG_tgt]

Driver=./datadirect/lib/ggpsql25.so

Description=Oracle GoldenGate PostgreSQL Wire Protocol

Database=targetdb

HostName=remotehost

PortNumber=5432

  1. 保存并关闭 odbc.ini 文件。

  2. 要为 PostgreSQL 部署设置 Oracle GoldenGate 中的数据库连接,请参阅添加数据库连接。

使用版本 14 或更低版本连接到启用了 FIPS 的 PostgreSQL 系统

从安装了 PostgreSQL 数据库低于版本 14 的启用了联邦信息处理标准 (Federal Information Processing Standards,FIPS) 的系统运行 Oracle GoldenGate 提取时,将生成以下错误:

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 是低于 14 的 PostgreSQL 数据库版本的默认加密算法,并导致提取异常终止并出现错误。

要在运行低于 14 的 PostgreSQL 数据库版本的启用了 FIPS 的系统上运行提取,请执行以下步骤:

  1. 修改 postgresql.conf 文件以将 password_encryption 选项设置为 scram-sha-256。

  2. 修改 pg_hba.conf 文件以将 Method 选项设置为 scram-sha-256,因为启用 FIPS 的系统不支持 md5。但是,这是可选步骤。

    在 password_encryption 选项设置为 scram-sha-256 之后,如果已创建数据库用户,则必须重新生成或修改 Oracle GoldenGate 提取所使用的数据库用户的密码。您可以使用相同的密码进行重新生成。

    例如,如果名为 admin 的数据库用户将口令用作 password123,则可以使用 scram-sha-256 加密重新生成相同的口令。

为 PostgreSQL 配置 SSL 支持

可以通过在 PostgreSQL 配置文件 ($PGDATA/postgresql.conf ) 中将配置参数 SSL 设置为 on 来启用 SSL。如果启用了 SSL,则相应的 hostssl 条目必须存在或添加到 pg_hba.conf 文件中。

启用 SSL 时,Oracle GoldenGate 将使用来自默认位置的根证书、根证书撤销列表 (root Certification Revocation List,CRL)、服务器客户机证书和密钥,如以下代码片段中所示:

~/.postgresql/root.crt
~/.postgresql/root.crl
~/.postgresql/postgresql.crt
~/.postgresql/postgresql.key

您需要从此列表中创建所需的实体,并将其存储在适当的位置。

如果使用非默认位置设置 SSL 配置,则应根据环境设置以下环境变量。

PGSSLROOTCERT
PGSSLCRL
PGSSLCERT
PGSSLKEY

odbc.ini 文件中需要更改

可以通过在 $ODBCINI 文件中将 EncryptionMethod DSN 属性设置为 1 或 6 来启用 SSL 支持。

如果设置为 0(无加密),则不加密数据。

如果设置为 1 (SSL),则使用加密协议版本连接选项中指定的 SSL 协议加密数据。如果数据库服务器不支持指定的加密方法,则连接将失败,驱动程序将返回错误。

如果设置为 6 (RequestSSL),则登录请求和数据使用 SSL 进行加密(如果服务器配置为 SSL)。如果没有为服务器配置 SSL,则会建立未加密的连接。使用的 SSL 协议由加密协议版本连接选项的设置确定。

如果还需要验证数据库服务器/客户端证书,则需要创建相应的 KeyStore 文件,并且应在 odbc.ini 文件中相应地设置以下 ODBC DSN 属性。

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 连接。