Replica procedurale

Informazioni sulla replica procedurale e su come configurarla.

Informazioni sulla replica procedurale

La replica procedurale è disponibile solo con Oracle AI Database. Oracle GoldenGate utilizza la replica procedurale per replicare le procedure PL/SQL fornite da Oracle AI Database evitando la spedizione e l'applicazione di record di volumi elevati in genere generati da queste operazioni. La replica procedurale implementa le modifiche del dizionario che controllano il funzionamento dell'utente e della sessione e lo scambio di oggetti nel dizionario.

La replica procedurale non è correlata alla replica delle istruzioni CREATE, ALTER e DROP (o DDL), ma piuttosto alla replica di una chiamata di procedura come:

CALL *procedure_name*(*arg1*, *arg2*, ...);

A differenza di:

exec *procedure_name*(*arg1*, *arg2*, ...)

Dopo aver abilitato la replica procedurale, le chiamate alle procedure nei package forniti da Oracle AI Database in un database vengono replicate in uno o più altri database e quindi eseguite in tali database. Ad esempio, una chiamata ai sottoprogrammi nel pacchetto DBMS_REDEFINITION può eseguire una ridefinizione in linea di una tabella. Se la tabella viene replicata in più database e si desidera che venga eseguita la stessa ridefinizione in linea nella tabella di ciascun database, è possibile effettuare le chiamate ai sottoprogrammi nel package DBMS_REDEFINITION in un database e Oracle GoldenGate può replicare tali chiamate negli altri database.

Per supportare la replica procedurale, Oracle AI Database deve essere configurato per identificare le procedure abilitate per questa ottimizzazione.

Per utilizzare la replica procedurale, è necessario soddisfare i prerequisiti riportati di seguito.

Panoramica del processo di replica procedurale

La replica procedurale utilizza un record trail per garantire che al record siano incapsulate informazioni sufficienti.

Per utilizzare la replica procedurale di Oracle GoldenGate, è necessario abilitarla. Oracle AI Database deve disporre di un meccanismo integrato per identificare le procedure abilitate per questa ottimizzazione.

I pragmi PL/SQL vengono utilizzati per indicare quali procedure possono essere replicate. Quando viene specificato il pragma, viene effettuata una chiamata a Logminer all'ingresso e all'uscita dalla routine. Il callback fornisce il nome della chiamata di procedura e gli argomenti e indica se la procedura è stata chiusa correttamente o se si è verificato un errore. Logminer aumenta il flusso di redo con le informazioni dei callback. Per le procedure supportate, il redo normale generato dalla procedura viene eliminato e viene replicata solo la chiamata di procedura.

Viene generato un nuovo record trail per identificare la replica procedurale. Questo record trail utilizza il formato dati della colonna trail esistente per gli argomenti passati alle procedure PL/SQL. Per i LOB, i dati vengono passati in chunk simili al formato trail esistente per i LOB. Questo record trail contiene informazioni sufficienti per ripetere la procedura così com'è sulla destinazione.

Quando si abilita la replica procedurale, si impedisce la scrittura dei singoli record interessati dalla procedura nel file trail.

Se si verifica un errore durante l'applicazione di una procedura PL/SQL, Replicat può riprodurre l'intera procedura PL/SQL.

Determinazione dell'attivazione della replica procedurale

Utilizzare la funzione GG_PROCEDURE_REPLICATION_ON nel package DBMS_GOLDENGATE_ADM per determinare se la replica procedurale di Oracle GoldenGate è attiva o disattivata.

Se si desidera utilizzare Oracle GoldenGate in un ambiente Oracle AI Database Vault con replica procedurale, è necessario impostare i privilegi appropriati. Vedere Oracle AI Database Vault Administrator's Guide.

Per abilitare la replica procedurale:

  1. Connettersi al database come sys (sqlplus, sqlcl, sqldeveloper) non come amministratore di Oracle GoldenGate.

  2. Eseguire la funzione GG_PROCEDURE_REPLICATION_ON.

Esempio 9-1 Esecuzione della funzione 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;
/

Abilitazione e disabilitazione dei log supplementari

Oracle GoldenGate fornisce i comandi per consentire l'abilitazione o la disabilitazione del log supplementare procedurale.

Per abilitare il log supplementare, procedere come segue.

  1. Connettersi al database di origine come amministratore di Oracle GoldenGate con DBLOGIN.

    CONNECT https://localhost:9000 DEPLOYMENT demo AS ggadmin PASSWORD adminpw
    DBLOGIN USERIDALIAS ggeast DOMAIN OracleGoldenGate
  2. Aggiunge il log supplementare per le repliche procedurali.

    ADD PROCEDURETRANDATA

    Viene visualizzato il seguente output:

    INFO OGG-13005 PROCEDURETRANDATA supplemental logging has been enabled.

Il log supplementare è abilitato per la replica della procedura.

Per disabilitare il log supplementare:

  1. Connettersi al database di origine come amministratore di Oracle GoldenGate con dblogin.

    CONNECT https://localhost:9000 DEPLOYMENT demo AS ggadmin PASSWORD adminpw
    DBLOGIN USERIDALIAS ggeast DOMAIN OracleGoldenGate
  2. Rimuove il log supplementare per le repliche delle procedure.

    DELETE PROCEDURETRANDATA

Il log supplementare è disabilitato per la replica delle procedure.

Per visualizzare le informazioni sulla registrazione supplementare:

  1. Connettersi al database di origine come amministratore di Oracle GoldenGate con dblogin.

    CONNECT https://localhost:9000 DEPLOYMENT demo AS ggadmin PASSWORD adminpw
    DBLOGIN USERIDALIAS ggeast DOMAIN OracleGoldenGate
  2. Visualizza informazioni di log supplementari per la replica della procedura.

    INFO PROCEDURETRANDATA

Vengono visualizzate informazioni di log supplementari per la replica delle procedure.

Funzioni di filtro per la replica procedurale

È possibile specificare le procedure e i pacchetti che si desidera includere o escludere per la replica delle procedure.

È possibile raggruppare i pacchetti e le procedure supportati utilizzando i gruppi di funzioni. Utilizzare il parametro della procedura con la parola chiave INCLUDE o EXCLUDE per filtrare le funzioni per la replica della procedura.

Nel parametro della procedura, INCLUDE o EXCLUDE specificano l'inizio di una clausola di filtro. Specifica le procedure da replicare (INCLUDE) o filtrare (EXCLUDE). La clausola di filtro deve essere costituita dalla parola chiave INCLUDE ALL_SUPPORTED o EXCLUDE ALL_SUPPORTED seguita da qualsiasi combinazione valida delle altre opzioni di filtro del parametro di procedura. Il filtro EXCLUDE ha la precedenza sui filtri INCLUDE che contengono gli stessi criteri.

  <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>

Compresi tutti i pacchetti forniti dal sistema in Extract:

  1. Connettersi a Extract nel database di origine.

    EXTRACT edba

    USERIDALIAS admin_dbA DOMAIN ORADEV

  2. Creare un nuovo file trail.

    EXTTRAIL ea

  3. Abilitare la replica della procedura, se non è già stata eseguita.

    TRANLOGOPTIONS INTEGRATEDPARAMS (ENABLE_PROCEDURAL_REPLICATION Y)

  4. Include il filtro per la replica della procedura.

    PROCEDURE INCLUDE FEATURE ALL_SUPPORTED

Sono stati inclusi tutti i package forniti dal sistema per la replica della procedura.

Esclusi i pacchetti specifici di Replicat:

  1. Connettersi a Replicat nel database di destinazione.

    REPLICAT rdba

    USERIDALIAS admin_dbBDOMAIN ORADEV

  2. Include il filtro per la replica della procedura.

    PROCEDURE EXCLUDE FEATURE RLS

L'esclusione di pacchetti specifici per la replica della procedura è riuscita.

Gestione degli errori di replica procedurale

La replica procedurale utilizza il parametro REPERROR per configurare il funzionamento di Replicat quando si verifica un errore procedurale.

Per impostazione predefinita, Replicat si interrompe quando si verifica una replica procedurale, pertanto l'utilizzo dei passi riportati di seguito consente di impostare la gestione degli errori.

  1. Connettersi a Replicat nel database di destinazione.

    REPLICAT rdba

    USERIDALIAS admin_dbBDOMAIN ORADEV

  2. Include il filtro per la replica della procedura.

    PROCEDURE EXCLUDE FEATURE RLS

  3. Specificare il parametro di gestione degli errori. Per altre opzioni, vedere REPERROR in Riferimento parametri e funzioni per Oracle GoldenGate.

    REPERROR (PROCEDURE, DISCARD)

Gestione degli errori per la replica procedurale riuscita.

Elenco delle procedure supportate per la replica procedurale di Oracle GoldenGate

La vista DBA_GG_SUPPORTED_PROCEDURES visualizza informazioni sui package supportati per la replica procedurale di Oracle GoldenGate.

Quando una procedura è supportata e la replica procedurale di Oracle GoldenGate è attiva, le chiamate alla procedura vengono replicate, a meno che la procedura non venga esclusa in modo specifico.

  1. Connettersi al database come sys (sqlplus, sqlcl, sqldeveloper) non come amministratore di Oracle GoldenGate.

  2. Eseguire una query sulla vista DBA_GG_SUPPORTED_PROCEDURES.

Esempio 9-2 Visualizzazione di informazioni sui pacchetti supportati per la replica procedurale di Oracle GoldenGate

Questa query visualizza le seguenti informazioni sui pacchetti:

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;

L'output è simile al seguente:

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
.
.
.

Monitoraggio della replica procedurale di Oracle GoldenGate

Un set di viste del dizionario dati consente di monitorare la replica procedurale di Oracle GoldenGate.

È possibile utilizzare le viste riportate di seguito per monitorare la replica procedurale di Oracle GoldenGate.

Visualizza Descrizione
DBA_GG_SUPPORTED_PACKAGES

Fornisce i dettagli sui package supportati per la replica procedurale di Oracle GoldenGate.

Quando un package è supportato e la replica procedurale di Oracle GoldenGate è attiva, le chiamate ai sottoprogrammi nel package vengono replicate.

DBA_GG_SUPPORTED_PROCEDURES Fornisce i dettagli sulle procedure supportate per la replica procedurale di Oracle GoldenGate.
DBA_GG_PROC_OBJECT_EXCLUSION

Fornisce i dettagli su tutti gli oggetti di database inclusi nella lista di esclusione per la replica procedurale di Oracle GoldenGate.

Un oggetto di database viene aggiunto alla lista di esclusione utilizzando la procedura INSERT_PROCREP_EXCLUSION_OBJ nel package DBMS_GOLDENGATE_ADM. Quando un oggetto di database è nella lista di esclusione, l'esecuzione di un sottoprogramma n il pacchetto non viene replicato se il sottoprogramma opera sull'oggetto escluso.

  1. Connettersi al database come sys (sqlplus, sqlcl o sqldeveloper) non come amministratore di Oracle GoldenGate.

  2. Eseguire una query sulle viste correlate alla replica procedurale di Oracle GoldenGate.