準備資料庫連線、系統以及參數設定值
瞭解如何設定 Oracle GoldenGate for Oracle 的資料庫連線、系統及參數設定值。
啟用 GoldenGate 複製與封存模式
步驟 1:啟用 GoldenGate 複製
必須為 Oracle AI Database 明確啟用支援 Oracle GoldenGate Extract 和 Replicat 所需的資料庫服務。
若要啟用 Oracle GoldenGate 複製,請設定下列資料庫初始化參數。如果在任何節點上使用 Oracle GoldenGate,Oracle RAC 中的所有執行處理都必須將此值設為 TRUE。
ALTER SYSTEM SET enable_goldengate_replication = true SCOPTE=both;
如需有關此參數的詳細資訊,請參閱初始化參數。
步驟 2:啟用存檔模式
Oracle 資料庫必須處於 ARCHIVELOG 模式,Extract 才能處理日誌檔。若要開啟 ARCHIVELOG 模式,請依照變更資料庫存檔模式中提供的步驟進行。
設定倒溯查詢
若要瞭解 Oracle GoldenGate 所擷取的資料,請參閱Oracle 資料類型和物件的支援詳細資訊。
依照預設,Oracle GoldenGate 會使用「倒溯查詢」從還原 (倒回) 表格空間擷取值。如此一來,Oracle GoldenGate 就可以根據特定時間或 SCN 重新建構一個一致讀取的資料列影像,以符合重做記錄。
若要取得最佳擷取結果,請依照下列方式設定來源資料庫:
-
設定 Oracle 初始化參數
UNDO_MANAGEMENT和UNDO_RETENTION,以設定足夠的重做保留量,如下所示 (秒)。UNDO_MANAGEMENT=AUTO UNDO_RETENTION=86400 UNDO_RETENTION can be adjusted upward in high-volume environments. -
使用下列公式來計算還原表格空間所需的空間。
*undo_space* = UNDO_RETENTION * *UPS* + *overhead*其中:
-
undo_space 是還原區塊的數目。
-
UNDO_RETENTION是UNDO_RETENTION參數的值 (秒)。 -
UPS 是每秒還原區塊的數目。
-
經常費用是中繼資料 (交易資料表等) 的最低經常費用。
使用系統檢視
V$UNDOSTAT來預估 UPS 與 overhead 。 -
-
對於包含
LOBs的表格,請執行下列其中一項作業:-
將
LOB儲存體子句設為RETENTION。這是UNDO_MANAGEMENT設為AUTO時所建立之表格的預設值。 -
如果使用
PCTVERSION而不是RETENTION,請將PCTVERSION設為初始值 25。您可以根據使用STATS EXTRACT命令報告的擷取統計資料進行調整。如果這些統計資料中STAT_OPER_ROWFETCHCURRENTBYROWID或STAT_OPER_ROWFETCH_CURRENTBYKEY欄位的值很高,請以 10 為增量單位增加PCTVERSION,直到統計資料顯示低值為止。
-
Oracle GoldenGate 提供下列參數來管理擷取。
| 參數或命令 | 說明 |
|---|---|
STATS EXTRACT 指令和 REPORTFETCH 選項 |
顯示擷取隨選統計資料。 |
STATOPTIONS 參數與 REPORTFETCH 選項 |
設定 STATS EXTRACT 命令,讓它一律顯示擷取統計資料。 |
MAXFETCHSTATEMENTS 參數 |
控制 Extract 在來源資料庫中維護之已準備查詢以及 SQLEXEC 作業的開啟游標數目。 |
MAXFETCHSTATEMENTS 參數 |
控制 Extract 的預設擷取行為:Extract 會執行倒溯查詢,或是從表格擷取目前的影像。 |
FETCHOPTIONS 參數與 USELATESTVERSION 或 NOUSELATESTVERSION 選項 |
處理 Extract 倒溯查詢的失敗,例如還原保留已過期或表格結構已變更。Extract 可以從表格擷取目前的影像,或者忽略失敗。 |
REPFETCHEDCOLOPTIONS 參數 |
控制 Replicat 處理包含擷取資料或遺漏資料欄條件之歷程檔記錄時的回應。 |
處理其他資料庫特性
有些資料庫特性可能會影響 Oracle GoldenGate,以及用於解決或解決特定情況的參數。
下表列出資料庫特性和相關的關注 / 解決方法。
| 資料庫特性 | 關注 / 解決 |
|---|---|
| 具有間隔分割的表格 | 若要支援具有間隔分割的表格,請確定 WILDCARDRESOLVE 參數仍維持其預設值 DYNAMIC。 |
| 含有虛擬資料欄的表格 | 不會記錄虛擬資料欄,而且 Oracle 不允許在虛擬資料欄使用 DML。不過,您可以執行下列作業,擷取此資料並將其對應至非虛擬資料欄的目標資料欄: 在 Extract 在 Replicat |
| 內含可更新視觀表的表格 | 若要複製到原本可更新的視觀表,請在可更新視觀表中的唯一資料欄上使用 KEYCOLS 子句,在對應相關來源和目標表格的相同 MAP 敘述句中定義索引鍵。 |
| 重做不同位置的日誌或存檔 | TRANLOGOPTIONS 參數包含處理將重做日誌或存檔儲存在與資料庫預設值不同位置或與 Extract 執行所在平台不同之環境的選項。 |
TRUNCATE 作業 |
若要複製
|
| 順序 | 若要複製序列的 DDL ( 若要只複製序列值,請使用 Extract 參數檔中的 |
設定多雲端用戶容器資料庫
Oracle GoldenGate 與 Oracle AI Database 可導入來源和目標的可插拔資料庫 (PDB)。Extract 是針對特定 PDB 註冊,稱為每一 PDB Extract。
注意:除了順流 Extract 組態之外,不建議使用 c##ggadmin 使用者存取根層次。在每一 PDB 層次使用 Extract,而不是使用根層次 Extract。
下圖顯示多雲端用戶容器資料庫組態中不同方法的組態:

從 PDB 直接新增擷取從隔離的 PDB 擷取,管理 PDB 層次的擁有權與責任。
您可以使用每一 PDB Extract,以本機 PDB 使用者身分連線 (例如,ggadmin),然後在資料庫註冊此 Extract。由於您已經以 PDB 使用者身分登入,因此不需要額外的 container 子句。同樣地,也不需要使用 SOURCECATALOG 或三個部分的命名慣例。
若要設定 Extract,請參閱新增 Extract 。
多雲端用戶容器資料庫組態的考量
使用 Oracle GoldenGate 設定用於資料複製的多用戶容器資料庫時,請考量下列準則:
-
多雲端用戶容器資料庫中的不同可插式資料庫可具有不同的字元集。Oracle GoldenGate 會從任何具有不同字元集的多租用戶資料庫擷取資料至一個歷程檔,並因使用不同的字元集而複製資料而不會損毀。
-
若要建立並註冊每一 PDB Extract,您必須連線到 PDB 使用者,例如為 PDB 層次存取建立的
ggadmin。使用USERIDALIAS參數來設定 SQL Net 連線字串,例如ggadmin@pdbeast。您不需要容器子句或SOURCECATALOG來設定每一 PDB Extract。 -
如果 PDB 使用者名稱、CDB 使用者名稱或 GLOBAL_NAME 中包含破折號,Oracle GoldenGate 會發出下列錯誤:
ERROR OGG-08221 Cannot register or unregister EXTRACT <extract_name> because of the following SQL error: OCI Error ORA (status = 44004-ORA-44004: invalid qualified SQL name -
若要支援來源 CDB 12.2,Extract 必須將歷程檔格式指定為版本 12.3。由於重做日誌中的變更,若要從 Oracle 12.2 或更新版本的多租用戶資料庫擷取,歷程檔格式版本必須是 12.3 或更新版本。
-
DDL 複製可作為多用戶資料庫的一般複製作業。
請參閱新增資料庫連線,以在 Oracle GoldenGate 證明資料中新增多雲端用戶容器資料庫使用者。請參閱授與 Oracle Database 21c 和更低層級的使用者權限或授與 Oracle AI Database 26ai 和更高層級的使用者權限 (視您需要設定的 Oracle AI Database 安裝而定)。
多雲端用戶容器資料庫的排清順序
如果 sequence.sql 命令檔會將資料庫程序套用至資料庫的「GoldenGate 管理」綱要,您就只能在 Oracle GoldenGate 內使用 FLUSH SEQUENCE 命令。
在初始同步化或重新同步化期間第一次啟動 Extract 之後,請立即使用 FLUSH SEQUENCE 命令。此命令會更新 Oracle 順序,讓 Extract 開始擷取交易資料時,可以使用最初重做記錄。正常情況下,會等到目前的快取用完後才會產生重做。排清功能為 Replicat 提供起始點,以用來同步至目標系統上正確的序列值。Extract 此後便能夠使用與常見的序列值快取保留關聯的重做。 1。FLUSH SEQUENCE 將使用下列 Oracle 程序:
| Database | Procedure | User and Privileges |
| --- | --- | --- |
| Source | `updateSequence` | Grants `EXECUTE` to the owner of the Oracle GoldenGate DDL objects, or other selected user if not using DDL support. |
| Target | `replicateSequence` | Grants `EXECUTE` to the Oracle GoldenGate Replicat user. |
{: summary="This table lists the Oracle procedures used by FLUSH SEQUENCE. It gives the database, procedure, and user and privileges." }
The `sequence.sql` script installs these procedures. Normally, this script is run as part of the Oracle GoldenGate installation process, but make certain that was done before using `FLUSH SEQUENCE`. If `sequence.sql` was not run, the flush fails and an error message similar to the following is generated:
<pre class="copy"><code>Cannot flush sequence {0}. Refer to the Oracle GoldenGate for Oracle documentation for instructions on how to set up and run the sequence.sql script. Error {1}.</code></pre>
- 使用
FLUSH SEQUENCE之前,請先使用DBLOGIN命令連線至資料庫。
FLUSH SEQUENCE 必須在 PDB 層次發出,才能在每個需要進行序列複製的 PDB 中建立 Oracle GoldenGate 使用者。使用 DBLOGIN 登入該 PDB,然後執行 FLUSH SEQUENCE 命令。
建議您在每個 PDB 中使用相同的綱要,以便與 GGSCHEMA GLOBALS 參數檔搭配使用。
在下列範例中,環境設定是針對 Oracle 21c 至 Oracle 21c Replication,使用 Oracle GoldenGate 21c (21.3.0) 進行整合式 Extract 平行 Replicat。
下表列出來源與目標 CDB、PDB 的名稱,以及用來連線至資料庫的對應使用者證明資料。
| 來源 CDB | 目標 CDB |
|---|---|
NORTH |
SOUTH |
PDB 名稱:DBEAST |
PDB 名稱:DBWEST |
一般用戶: 序列的 PDB 使用者: |
PDB 使用者:ggadmin |
sqlplus system/manager
ALTER SESSION SESSION SET CONTAINER=CERTMISSN;
CREATE USER ggate IDENTIFIED BY *password* DEFAULT TABLESPACE USERS TEMPORARY TABLESPACE TEMP QUOTA UNLIMITED ON USERS CONTAINER=CURRENT;
執行 @sequence.sql
sqlplus system/manager
ALTER SESSION SET CONTAINER=DBEAST;
@sequence.sql
當出現提示時,輸入下列訊息:
GGADMIN
執行 FLUSH SEQUENCE 命令:
DBLOGIN USERIDALIAS ggeast DOMAIN OracleGoldenGate
FLUSH SEQUENCE DBEAST.HR.*
目標 Oracle GoldenGate 組態:
sqlplus system/manager
ALTER SESSION SET CONTAINER =PDBWEST;
@sequence.sql
出現提示時,請輸入 PDB 使用者名稱 ggadmin。
這也適用於 @sequence.sql 命令檔,您必須同時在要擷取的每個 PDB 上執行這些命令檔。