程序複寫
瞭解程序複製及如何設定。
關於程序複寫
程序複寫僅適用於 Oracle AI Database。Oracle GoldenGate 會使用程序複製來複製 Oracle AI Database 提供的 PL/SQL 程序,以避免出貨與套用通常由這些作業產生的大量記錄。程序複寫會實行控制使用者與階段作業行為的說明變更,以及在說明中交換物件。
程序複製與複製 CREATE、ALTER 和 DROP 敘述句 (或 DDL) 無關,而是複製程序呼叫,如下所示:
CALL *procedure_name*(*arg1*, *arg2*, ...);
相對於:
exec *procedure_name*(*arg1*, *arg2*, ...)
啟用程序複製之後,會在一個資料庫中對 Oracle AI Database 提供之套裝程式中的程序呼叫會複製到一或多個其他資料庫,然後在這些資料庫中執行。例如,呼叫 DBMS_REDEFINITION 套裝軟體中的子程式可以執行表格的線上重新定義。如果在數個資料庫複製表格,而您想要在每個資料庫的表格上執行相同的線上重新定義,則可以在一個資料庫對 DBMS_REDEFINITION 套裝程式中的子程式進行呼叫,而 Oracle GoldenGate 可以將這些呼叫複製到其他資料庫。
若要支援程序複製,您的 Oracle AI Database 應該設定為識別為此最佳化啟用的程序。
若要使用程序複製,必須符合下列先決條件:
-
Oracle GoldenGate 與 Extract 和 Replicat。
-
系統提供的套裝程式只能與 DML 和 DDL 結合使用。
程序複寫處理作業概要
程序複製會使用歷程檔記錄來確保記錄已封裝足夠的資訊。
若要使用 Oracle GoldenGate 程序複製,您必須啟用它。您的 Oracle AI Database 必須具備內建機制,才能識別為此最佳化啟用的程序。
PL/SQL 綱要是用來指示可以複製的程序。指定 pragma 時,會在進入時對 Logminer 進行回呼,然後從常式結束。回呼提供程序呼叫和引數的名稱,並指出程序是否順利結束或發生錯誤。Logminer 會使用來自回呼的資訊來增強重做串流。對於支援的程序,會抑制程序所產生的一般重做,並且只會複製程序呼叫。
系統會產生新的歷程檔記錄,以識別程序複製。此歷程檔記錄會運用現有的歷程檔資料欄資料格式,取得傳送給 PL/SQL 程序的引數。對於 LOB,資料會以與 LOB 現有歷程檔格式類似的區塊傳送。此歷程檔記錄有足夠的資訊可依原樣在目標上重新執行程序。
當您啟用程序複製時,它可以防止將受程序影響的個別記錄寫入歷程檔。
如果套用 PL/SQL 程序時發生錯誤,Replicat 可以重新執行整個 PL/SQL 程序。
判斷程序複寫是否開啟
使用 DBMS_GOLDENGATE_ADM 套裝程式中的 GG_PROCEDURE_REPLICATION_ON 函數來判斷 Oracle GoldenGate 程序複製是否開啟或關閉。
若要在含有程序複製的 Oracle AI Database Vault 環境中使用 Oracle GoldenGate,您必須設定適當的權限。請參閱 Oracle AI Database Vault Administrator's Guide。
若要啟用程序複製,請執行下列動作:
-
以
sys(sqlplus、sqlcl、sqldeveloper) 的身分連線資料庫,而非 Oracle GoldenGate 管理員。 -
執行
GG_PROCEDURE_REPLICATION_ON函數。
範例 9-1 執行 GG_PROCEDURE_REPLICATION_ON 函數
SET SERVEROUTPUT ON
DECLARE
on_or_off NUMBER;
BEGIN
on_or_off := DBMS_GOLDENGATE_ADM.GG_PROCEDURE_REPLICATION_ON;
IF on_or_off=1 THEN
DBMS_OUTPUT.PUT_LINE('Oracle GoldenGate procedural replication is ON.');
ELSE
DBMS_OUTPUT.PUT_LINE('Oracle GoldenGate procedural replication is OFF.');
END IF;
END;
/
啟用和停用補充日誌記錄
Oracle GoldenGate 提供可讓您啟用或停用程序補充記錄日誌的命令。
若要啟用補充日誌記錄:
-
以 Oracle GoldenGate 管理員身分與
DBLOGIN連線至來源資料庫。CONNECT https://localhost:9000 DEPLOYMENT demo AS ggadmin PASSWORD adminpwDBLOGIN USERIDALIAS ggeast DOMAIN OracleGoldenGate -
新增程序複製的補充日誌記錄。
ADD PROCEDURETRANDATA輸出會顯示:
INFO OGG-13005 PROCEDURETRANDATA supplemental logging has been enabled.
已對程序複製啟用補充日誌記錄。
若要停用補充記錄,請執行下列動作:
-
以 Oracle GoldenGate 管理員身分與 dblogin 連線至來源資料庫。
CONNECT https://localhost:9000 DEPLOYMENT demo AS ggadmin PASSWORD adminpwDBLOGIN USERIDALIAS ggeast DOMAIN OracleGoldenGate -
移除重複程序的補充日誌記錄。
DELETE PROCEDURETRANDATA
程序複製停用補充日誌記錄。
若要檢視補充記錄的相關資訊,請執行下列動作:
-
以 Oracle GoldenGate 管理員身分與 dblogin 連線至來源資料庫。
CONNECT https://localhost:9000 DEPLOYMENT demo AS ggadmin PASSWORD adminpwDBLOGIN USERIDALIAS ggeast DOMAIN OracleGoldenGate -
顯示程序複製的補充日誌記錄資訊。
INFO PROCEDURETRANDATA
顯示程序複製的補充日誌記錄資訊。
篩選程序複製的功能
您可以指定要包括或排除在程序複製之外的程序和套裝程式。
您可以使用功能群組將支援的套裝軟體和程序分組。您可以使用程序參數搭配 INCLUDE 或 EXCLUDE 關鍵字來篩選程序複製的功能。
在程序參數中,INCLUDE 或 EXCLUDE 指定篩選子句的開頭。它們會指定複製 (INCLUDE) 或篩選出 (EXCLUDE) 的程序。篩選子句必須包含 INCLUDE ALL_SUPPORTED 或 EXCLUDE ALL_SUPPORTED 關鍵字,後面接著程序參數其他篩選選項的任何有效組合。EXCLUDE 篩選的優先順序高於任何包含相同準則的 INCLUDE 篩選。
<div class="infoboxnote" markdown="1">
**Note:**
When replicating Oracle Streams Advanced Queuing (AQ) procedures, you must use the `RULE` option in your parameter file as follows:
`PROCEDURE INCLUDE FEATURE ALL_SUPPORTED`
or
`PROCEDURE INCLUDE FEATURE AQ, RULE`
Do *not* use `PROCEDURE INCLUDE FEATURE AQ` without the `RULE` option.
</div>
在 Extract 中包含所有系統提供的套裝程式:
-
連線至來源資料庫中的 Extract。
EXTRACT edbaUSERIDALIAS admin_dbA DOMAIN ORADEV -
建立新的歷程檔。
EXTTRAIL ea -
啟用程序複寫 (如果尚未進行)。
TRANLOGOPTIONS INTEGRATEDPARAMS (ENABLE_PROCEDURAL_REPLICATION Y) -
包含程序複製的篩選。
PROCEDURE INCLUDE FEATURE ALL_SUPPORTED
您已順利包含所有系統提供的套裝軟體以進行程序複製。
在 Replicat 排除特定的套裝程式:
-
連線至目標資料庫中的 Replicat。
REPLICAT rdbaUSERIDALIAS admin_dbBDOMAIN ORADEV -
包含程序複製的篩選。
PROCEDURE EXCLUDE FEATURE RLS
您已順利排除程序複製的特定套裝程式。
處理程序複寫錯誤
程序複製使用 REPERROR 參數來設定發生程序錯誤時的 Replicat 行為。
依照預設,Replicat 會在發生程序複製時中止,因此使用下列步驟設定錯誤處理:
-
連線至目標資料庫中的 Replicat。
REPLICAT rdbaUSERIDALIAS admin_dbBDOMAIN ORADEV -
包含程序複製的篩選。
PROCEDURE EXCLUDE FEATURE RLS -
指定錯誤處理參數,請參閱 Oracle GoldenGate 的參數與函數參照中的
REPERROR,瞭解其他選項。REPERROR (PROCEDURE, DISCARD)
您已順利處理程序複製的錯誤。
列出 Oracle GoldenGate 程序複製支援的程序
DBA_GG_SUPPORTED_PROCEDURES 檢視會顯示 Oracle GoldenGate 程序複製支援之套裝程式的相關資訊。
支援程序且開啟 Oracle GoldenGate 程序複製時,會複製該程序的呼叫,除非特別排除該程序。
-
以
sys(sqlplus、sqlcl、sqldeveloper) 的身分連線資料庫,而非 Oracle GoldenGate 管理員。 -
查詢
DBA_GG_SUPPORTED_PROCEDURES檢視。
範例 9-2 顯示 Oracle GoldenGate 程序複製支援之套裝程式的相關資訊
此查詢會顯示下列套裝軟體相關資訊:
-
每個套件的擁有者
-
每個套裝軟體的名稱
-
每個程序的名稱
-
支援此程序的最低資料庫版本
-
是否有排除規則無法針對某些資料庫物件複製程序
COLUMN OWNER FORMAT A10
COLUMN PACKAGE_NAME FORMAT A15
COLUMN PROCEDURE_NAME FORMAT A15
COLUMN MIN_DB_VERSION FORMAT A14
COLUMN EXCLUSION_RULE_EXISTS FORMAT A14
SELECT OWNER,
PACKAGE_NAME,
PROCEDURE_NAME,
MIN_DB_VERSION,
EXCLUSION_RULE_EXISTS
FROM DBA_GG_SUPPORTED_PROCEDURES;
您的執行結果如下:
OWNER PACKAGE_NAME PROCEDURE_NAME MIN_DB_VERSION EXCLUSION_RULE
---------- --------------- --------------- -------------- --------------
XDB DBMS_XDB_CONFIG ADDTRUSTMAPPING 12.2 NO
CTXSYS CTX_DDL ALTER_INDEX 12.2 NO
SYS DBMS_FGA DROP_POLICY 12.2 NO
SYS XS_ACL DELETE_ACL 12.2 NO
.
.
.
監督 Oracle GoldenGate 程序複寫
一組資料說明視觀表可讓您監督 Oracle GoldenGate 程序複製。
您可以使用下列檢視來監督 Oracle GoldenGate 程序複製:
| 檢視 | 說明 |
|---|---|
DBA_GG_SUPPORTED_PACKAGES |
提供 Oracle GoldenGate 程序複製支援之套裝程式的詳細資訊。 支援套裝程式且開啟 Oracle GoldenGate 程序複製時,會複製套裝程式中子程式的呼叫。 |
DBA_GG_SUPPORTED_PROCEDURES |
提供 Oracle GoldenGate 程序複製支援之程序的詳細資訊。 |
DBA_GG_PROC_OBJECT_EXCLUSION |
提供 Oracle GoldenGate 程序複製之排除清單上的所有資料庫物件相關詳細資訊。 資料庫物件會使用 |
-
以
sys(sqlplus、sqlcl或sqldeveloper) 的身分連線資料庫,而非 Oracle GoldenGate 管理員。 -
查詢與 Oracle GoldenGate 程序複製相關的檢視。