程序複寫

瞭解程序複製及如何設定。

關於程序複寫

程序複寫僅適用於 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 程序複製,您必須啟用它。您的 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。

若要啟用程序複製,請執行下列動作:

  1. 以 sys (sqlplus、sqlcl、sqldeveloper) 的身分連線資料庫,而非 Oracle GoldenGate 管理員。

  2. 執行 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 提供可讓您啟用或停用程序補充記錄日誌的命令。

若要啟用補充日誌記錄:

  1. 以 Oracle GoldenGate 管理員身分與 DBLOGIN 連線至來源資料庫。

    CONNECT https://localhost:9000 DEPLOYMENT demo AS ggadmin PASSWORD adminpw
    DBLOGIN USERIDALIAS ggeast DOMAIN OracleGoldenGate
  2. 新增程序複製的補充日誌記錄。

    ADD PROCEDURETRANDATA

    輸出會顯示:

    INFO OGG-13005 PROCEDURETRANDATA supplemental logging has been enabled.

已對程序複製啟用補充日誌記錄。

若要停用補充記錄,請執行下列動作:

  1. 以 Oracle GoldenGate 管理員身分與 dblogin 連線至來源資料庫。

    CONNECT https://localhost:9000 DEPLOYMENT demo AS ggadmin PASSWORD adminpw
    DBLOGIN USERIDALIAS ggeast DOMAIN OracleGoldenGate
  2. 移除重複程序的補充日誌記錄。

    DELETE PROCEDURETRANDATA

程序複製停用補充日誌記錄。

若要檢視補充記錄的相關資訊,請執行下列動作:

  1. 以 Oracle GoldenGate 管理員身分與 dblogin 連線至來源資料庫。

    CONNECT https://localhost:9000 DEPLOYMENT demo AS ggadmin PASSWORD adminpw
    DBLOGIN USERIDALIAS ggeast DOMAIN OracleGoldenGate
  2. 顯示程序複製的補充日誌記錄資訊。

    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 中包含所有系統提供的套裝程式:

  1. 連線至來源資料庫中的 Extract。

    EXTRACT edba

    USERIDALIAS admin_dbA DOMAIN ORADEV

  2. 建立新的歷程檔。

    EXTTRAIL ea

  3. 啟用程序複寫 (如果尚未進行)。

    TRANLOGOPTIONS INTEGRATEDPARAMS (ENABLE_PROCEDURAL_REPLICATION Y)

  4. 包含程序複製的篩選。

    PROCEDURE INCLUDE FEATURE ALL_SUPPORTED

您已順利包含所有系統提供的套裝軟體以進行程序複製。

在 Replicat 排除特定的套裝程式:

  1. 連線至目標資料庫中的 Replicat。

    REPLICAT rdba

    USERIDALIAS admin_dbBDOMAIN ORADEV

  2. 包含程序複製的篩選。

    PROCEDURE EXCLUDE FEATURE RLS

您已順利排除程序複製的特定套裝程式。

處理程序複寫錯誤

程序複製使用 REPERROR 參數來設定發生程序錯誤時的 Replicat 行為。

依照預設,Replicat 會在發生程序複製時中止,因此使用下列步驟設定錯誤處理:

  1. 連線至目標資料庫中的 Replicat。

    REPLICAT rdba

    USERIDALIAS admin_dbBDOMAIN ORADEV

  2. 包含程序複製的篩選。

    PROCEDURE EXCLUDE FEATURE RLS

  3. 指定錯誤處理參數,請參閱 Oracle GoldenGate 的參數與函數參照中的 REPERROR ,瞭解其他選項。

    REPERROR (PROCEDURE, DISCARD)

您已順利處理程序複製的錯誤。

列出 Oracle GoldenGate 程序複製支援的程序

DBA_GG_SUPPORTED_PROCEDURES 檢視會顯示 Oracle GoldenGate 程序複製支援之套裝程式的相關資訊。

支援程序且開啟 Oracle GoldenGate 程序複製時,會複製該程序的呼叫,除非特別排除該程序。

  1. 以 sys (sqlplus、sqlcl、sqldeveloper) 的身分連線資料庫,而非 Oracle GoldenGate 管理員。

  2. 查詢 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 程序複製之排除清單上的所有資料庫物件相關詳細資訊。

資料庫物件會使用 DBMS_GOLDENGATE_ADM 套裝程式中的 INSERT_PROCREP_EXCLUSION_OBJ 程序新增至排除清單。當資料庫物件在排除清單中時,如果子程式在排除的物件上操作,則不會複製套件的子程式 n 執行。

  1. 以 sys (sqlplus、sqlcl 或 sqldeveloper) 的身分連線資料庫,而非 Oracle GoldenGate 管理員。

  2. 查詢與 Oracle GoldenGate 程序複製相關的檢視。