準備資料庫連線
瞭解如何設定 Oracle GoldenGate for PostgreSQL 的資料庫連線、系統和參數設定值。
Oracle GoldenGate for PostgreSQL 會使用預先封裝的 ODBC 驅動程式連線至 PostgreSQL 資料庫。可以使用資料來源名稱 (DSN) 建立連線,或使用直接連線並提供資料庫伺服器主機、連接埠、資料庫和其他資訊。
使用 DSN 連線時,必須將連線詳細資訊列在 odbc.ini 檔案中,當您將資料庫連線新增至「管理服務」的 Web 介面或透過「管理從屬端」時,會手動輸入使用直接項目。
注意:Oracle GoldenGate 連線不支援 PgBouncer。
注意:Oracle GoldenGate 不支援使用 Pgpool 的 PostgreSQL 連線。
執行下方提供的步驟來建立 DSN 項目,或打算使用直接連線之後,請前往新增資料庫連線主題,瞭解如何建立資料庫連線。
在 Linux 中設定 DSN 連線
若要建立 Oracle GoldenGate 處理作業的 DSN 連線,您必須先新增 Oracle GoldenGate for PostgreSQL 部署的環境變數,然後建立 odbc.ini 檔案來儲存連線屬性。
-
登入「服務管理程式」Web 介面。
-
從左邊的導覽窗格中,按一下部署,然後選取 Oracle GoldenGate PostgreSQL 部署。這會展開部署的各種設定值。
-
按一下組態,然後按一下環境變數旁邊的加號 ( +)。
-
在兩個可用欄位中提供下列資訊。對於環境變數值欄位,請確定其為
odbc.ini檔案的絕對路徑:環境變數名稱 =
ODBCINI環境變數值 =
/ogg/deployment/pgsql/odbc.ini
-
按一下送出以建立新變數,然後從建置窗格重新啟動建置,以讓變更生效。
-
在 Oracle GoldenGate 安裝的
deployment資料夾中,手動建立odbc.ini檔案,然後在此檔案中新增資料來源。
建立 DSN 檔案時,請使用下列最小設定值:
-
Data Source Name– Oracle GoldenGate 處理作業 (例如 Extract 或 Replicat) 將參照之來源或目標資料庫連線的使用者定義名稱。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 高可用性 (HA) 設定中很有用。在 PostgreSQL HA 設定中,有一個主要和多個待命伺服器。您可以設定連線字串格式來指定多個主機:
連線字串 說明 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所有主機上使用相同連接埠號碼 (1234) 的所有主機 ( host1、host2、host3)。將嘗試使用所有主機 (host1、host2、host3) 的連接埠 1234 來連線。db-user@host1,host2,host3:1234/db-name所有主機上使用相同連接埠號碼 (1234) 的所有主機 ( host1、host2、host3)。將嘗試使用所有主機的連接埠 1234 來連線。db-user@host1:3456,host2,host3:1234/db-name如果以其他格式指定連線字串,而指定其他主機時未指定任何連接埠,則會使用最後一個或最右邊的連接埠設定,作為連線字串中未指定連接埠號碼之所有主機的連接埠號碼。如連線字串所示:
db-user@host1:3456,host2,host3:1234/db-namehost2的連接埠號碼是 1234,這是連線字串中指定的最右邊連接埠號碼。 -
您也可以為 Extract 或 Replicat 使用者提供
LogonID和Password,但會以純文字儲存這些內容。建議將這些欄位保留在 DSN 中,而不是將它們儲存在 Oracle GoldenGate 公事包中作為證明資料別名,然後使用 Extract 和 Replicat 中的USERIDALIAS參數參照這些欄位。
以下為含有兩個 DSN 項目的 odbc.ini 檔案範例。以下範例中使用的資料來源名稱是 PG_src 和 PG_tgt。
|
|
| — |
|
-
儲存並關閉
odbc.ini檔案。 -
若要設定 Oracle GoldenGate 中 PostgreSQL 部署的資料庫連線,請參閱新增資料庫連線。
使用版本 14 或更低的版本連線至啟用 FIPS 的 PostgreSQL 系統
從安裝 PostgreSQL 資料庫低於 14 版的啟用 Federal Information Processing Standards (FIPS) 的系統執行 Oracle GoldenGate Extract 時,會產生下列錯誤:
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 因發生錯誤而中止。
若要在啟用 FIPS 的系統上執行 PostgreSQL 資料庫版本低於 14 的 Extract,請執行下列步驟:
-
修改
postgresql.conf檔案,將password_encryption選項設為scram-sha-256。 -
修改
pg_hba.conf檔案,將Method選項設為scram-sha-256,因為啟用 FIPS 的系統不支援md5。不過,這是選擇性步驟。在
password_encryption選項設為scram-sha-256之後,如果已經建立資料庫使用者,則必須重新產生或修改 Oracle GoldenGate Extract 所使用之資料庫使用者的密碼。您可以使用相同的密碼重新產生。例如,如果名為
admin的資料庫使用者使用password123的密碼,則可以使用scram-sha-256加密重新產生相同的密碼。
配置 PostgreSQL 的 SSL 支援
您可以在 PostgreSQL 組態檔 ($PGDATA/postgresql.conf ) 中將組態參數 SSL 設為開啟,即可啟用 SSL。如果啟用 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),則會使用「加密協定版本」連線選項中指定的 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 檔案來驗證從屬端憑證 (由伺服器)。注意:PostgreSQL 的 Azure 資料庫預設為強制執行 SSL 連線。若要遵循這項需求,請執行此處所列的需求,或選擇性地使用 Microsoft Azure 入口網站,停用從資料庫執行處理的連線安全設定值強制執行 SSL 連線。