Réplication procédurale

Découvrez les procédures de réplication et comment la configurer.

A propos de la réplication procédurale

La réplication procédurale est disponible uniquement avec Oracle AI Database. Oracle GoldenGate utilise la réplication procédurale pour répliquer les procédures PL/SQL fournies par Oracle AI Database, en évitant l'expédition et l'application d'enregistrements de volume élevé généralement générés par ces opérations. La réplication procédurale implémente des modifications du dictionnaire qui contrôlent le comportement des utilisateurs et des sessions, ainsi que le swap d'objets dans le dictionnaire.

La réplication procédurale n'est pas liée à la réplication des instructions CREATE, ALTER et DROP (ou LDD), mais à la réplication d'un appel de procédure tel que :

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

Par opposition à :

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

Une fois la réplication procédurale activée, les appels aux procédures dans les packages fournis par Oracle AI Database sur une base de données sont répliqués vers une ou plusieurs autres bases de données, puis exécutés sur ces bases de données. Par exemple, un appel de sous-programmes dans le package DBMS_REDEFINITION peut effectuer une redéfinition en ligne d'une table. Si la table est répliquée dans plusieurs bases de données et que vous souhaitez effectuer la même redéfinition en ligne sur la table dans chaque base de données, vous pouvez effectuer les appels vers les sous-programmes du package DBMS_REDEFINITION dans une base de données et Oracle GoldenGate peut répliquer ces appels vers les autres bases de données.

Pour prendre en charge la réplication procédurale, votre instance Oracle AI Database doit être configurée pour identifier les procédures activées pour cette optimisation.

Pour utiliser la réplication procédurale, les prérequis suivants doivent être respectés :

Présentation des processus de réplication procédurale

La réplication procédurale utilise un enregistrement de trace pour garantir que des informations suffisantes sont encapsulées avec l'enregistrement.

Pour utiliser la réplication procédurale Oracle GoldenGate, vous devez l'activer. Votre base de données Oracle AI Database doit disposer d'un mécanisme intégré pour identifier les procédures activées pour cette optimisation.

Les pragmas PL/SQL sont utilisés pour indiquer quelles procédures peuvent être répliquées. Lorsque le pragma est spécifié, un rappel est effectué vers Logminer à l'entrée et à la sortie de la routine. Le callback fournit le nom de l'appel de procédure et des arguments et indique si la procédure s'est arrêtée correctement ou avec une erreur. Logminer augmente le flux de données de journalisation avec les informations issues des callbacks. Pour les procédures prises en charge, les informations de journalisation normales générées par la procédure sont supprimées et seul l'appel de procédure est répliqué.

Un nouvel enregistrement de trace (trail) est généré pour identifier la réplication procédurale. Cet enregistrement de trace tire parti du format de données de colonne de trace existant pour les arguments transmis aux procédures PL/SQL. Pour les objets LOB, les données sont transmises en blocs similaires au format de trace existant pour les objets LOB. Cet enregistrement de trace (trail) contient suffisamment d'informations pour réexécuter la procédure telle quelle sur la cible.

Lorsque vous activez la réplication procédurale, elle empêche l'écriture d'enregistrements individuels concernés par la procédure dans le fichier trace.

Si une erreur survient lors de l'application d'une procédure PL/SQL, le processus Replicat peut réexécuter l'ensemble de la procédure PL/SQL.

Détermination de l'activation ou non de la réplication procédurale

Utilisez la fonction GG_PROCEDURE_REPLICATION_ON du package DBMS_GOLDENGATE_ADM pour déterminer si la réplication procédurale Oracle GoldenGate est activée ou désactivée.

Si vous souhaitez utiliser Oracle GoldenGate dans un environnement Oracle AI Database Vault avec une réplication procédurale, vous devez définir les privilèges appropriés. Reportez-vous au Guide de l'administrateur Oracle AI Database Vault.

Pour activer la réplication procédurale, procédez comme suit :

  1. Connectez-vous à la base de données en tant qu'administrateur Oracle GoldenGate (sys (sqlplus, sqlcl, sqldeveloper) et non en tant qu'administrateur Oracle GoldenGate.

  2. Exécutez la fonction GG_PROCEDURE_REPLICATION_ON.

Exemple 9-1 Exécution de la fonction 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;
/

Activation et désactivation de la journalisation supplémentaire

Oracle GoldenGate fournit des commandes permettant d'activer ou de désactiver la journalisation supplémentaire des procédures.

Pour activer la journalisation supplémentaire, procédez comme suit :

  1. Connectez-vous à la base de données source en tant qu'administrateur Oracle GoldenGate avec DBLOGIN.

    CONNECT https://localhost:9000 DEPLOYMENT demo AS ggadmin PASSWORD adminpw
    DBLOGIN USERIDALIAS ggeast DOMAIN OracleGoldenGate
  2. Ajoutez la journalisation supplémentaire pour la réplication procédurale.

    ADD PROCEDURETRANDATA

    La sortie se présente comme suit :

    INFO OGG-13005 PROCEDURETRANDATA supplemental logging has been enabled.

La journalisation supplémentaire est activée pour la réplication de procédure.

Pour désactiver la journalisation supplémentaire, procédez comme suit :

  1. Connectez-vous à la base de données source en tant qu'administrateur Oracle GoldenGate avec dblogin.

    CONNECT https://localhost:9000 DEPLOYMENT demo AS ggadmin PASSWORD adminpw
    DBLOGIN USERIDALIAS ggeast DOMAIN OracleGoldenGate
  2. Enlève la journalisation supplémentaire pour la réplication de procédure.

    DELETE PROCEDURETRANDATA

La journalisation supplémentaire est désactivée pour la réplication de procédure.

Pour afficher des informations sur la journalisation supplémentaire, procédez comme suit :

  1. Connectez-vous à la base de données source en tant qu'administrateur Oracle GoldenGate avec dblogin.

    CONNECT https://localhost:9000 DEPLOYMENT demo AS ggadmin PASSWORD adminpw
    DBLOGIN USERIDALIAS ggeast DOMAIN OracleGoldenGate
  2. Affichez les informations de journalisation supplémentaires pour la réplication de procédure.

    INFO PROCEDURETRANDATA

Les informations de journalisation supplémentaires pour la réplication de procédure s'affichent.

Fonctionnalités de filtrage pour la réplication procédurale

Vous pouvez spécifier les procédures et packages à inclure ou à exclure pour la réplication de procédure.

Vous regroupez les packages et procédures pris en charge à l'aide de groupes de fonctionnalités. Vous utilisez le paramètre de procédure avec le mot-clé INCLUDE ou EXCLUDE pour filtrer les fonctionnalités de réplication de procédure.

Dans le paramètre de procédure, INCLUDE ou EXCLUDE indiquent le début d'une clause de filtrage. Ils indiquent les procédures à répliquer (INCLUDE) ou à filtrer (EXCLUDE). La clause de filtrage doit être composée du mot-clé INCLUDE ALL_SUPPORTED ou EXCLUDE ALL_SUPPORTED suivi de toute combinaison valide des autres options de filtrage du paramètre de procédure. Le filtre EXCLUDE est prioritaire sur les filtres INCLUDE qui contiennent les mêmes critères.

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

Inclut tous les packages fournis par le système lors de l'extraction :

  1. Connectez-vous à Extract dans la base de données source.

    EXTRACT edba

    USERIDALIAS admin_dbA DOMAIN ORADEV

  2. Créez un fichier trace (trail).

    EXTTRAIL ea

  3. Activez la réplication de procédure, si ce n'est déjà fait.

    TRANLOGOPTIONS INTEGRATEDPARAMS (ENABLE_PROCEDURAL_REPLICATION Y)

  4. Filtre d'inclusion pour la réplication de procédure.

    PROCEDURE INCLUDE FEATURE ALL_SUPPORTED

Vous avez inclus tous les packages fournis par le système pour la réplication de procédure.

Exclusion de packages spécifiques dans Replicat :

  1. Connectez-vous au processus Replicat dans la base de données cible.

    REPLICAT rdba

    USERIDALIAS admin_dbBDOMAIN ORADEV

  2. Filtre d'inclusion pour la réplication de procédure.

    PROCEDURE EXCLUDE FEATURE RLS

Vous avez exclu des packages spécifiques pour la réplication de procédure.

Gestion des erreurs de réplication procédurale

La réplication procédurale utilise le paramètre REPERROR pour configurer le comportement du processus Replicat lorsqu'une erreur procédurale se produit.

Par défaut, le processus Replicat abandonne lorsqu'une réplication procédurale se produit. Les étapes suivantes permettent de configurer la gestion des erreurs :

  1. Connectez-vous au processus Replicat dans la base de données cible.

    REPLICAT rdba

    USERIDALIAS admin_dbBDOMAIN ORADEV

  2. Filtre d'inclusion pour la réplication de procédure.

    PROCEDURE EXCLUDE FEATURE RLS

  3. Indiquez le paramètre de gestion des erreurs. Pour d'autres options, reportez-vous à REPERROR dans Référence des paramètres et des fonctions pour Oracle GoldenGate.

    REPERROR (PROCEDURE, DISCARD)

Vous avez géré les erreurs pour la réplication procédurale.

Liste des procédures prises en charge pour la réplication procédurale Oracle GoldenGate

La vue DBA_GG_SUPPORTED_PROCEDURES affiche des informations sur les packages pris en charge pour la réplication procédurale Oracle GoldenGate.

Lorsqu'une procédure est prise en charge et que la réplication procédurale Oracle GoldenGate est activée, les appels à la procédure sont répliqués, sauf si la procédure est exclue spécifiquement.

  1. Connectez-vous à la base de données en tant qu'administrateur Oracle GoldenGate (sys (sqlplus, sqlcl, sqldeveloper) et non en tant qu'administrateur Oracle GoldenGate.

  2. Interrogez la vue DBA_GG_SUPPORTED_PROCEDURES.

Exemple 9-2 Affichage d'informations sur les packages pris en charge pour la réplication procédurale Oracle GoldenGate

Cette requête affiche les informations suivantes sur les packages :

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;

Vous avez l'air d'une sortie similaire à ce qui suit :

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

Surveiller la réplication procédurale d'Oracle GoldenGate

Un ensemble de vues du dictionnaire de données vous permet de surveiller la réplication procédurale Oracle GoldenGate.

Vous pouvez utiliser les vues suivantes pour surveiller la réplication procédurale Oracle GoldenGate :

Voir Description
DBA_GG_SUPPORTED_PACKAGES

Fournit des détails sur les packages pris en charge pour la réplication procédurale Oracle GoldenGate.

Lorsqu'un package est pris en charge et que la réplication procédurale Oracle GoldenGate est activée, les appels aux sous-programmes du package sont répliqués.

DBA_GG_SUPPORTED_PROCEDURES Fournit des détails sur les procédures prises en charge pour la réplication procédurale Oracle GoldenGate.
DBA_GG_PROC_OBJECT_EXCLUSION

Fournit des détails sur tous les objets de base de données figurant sur la liste d'exclusion pour la réplication procédurale Oracle GoldenGate.

Un objet de base de données est ajouté à la liste d'exclusion à l'aide de la procédure INSERT_PROCREP_EXCLUSION_OBJ du package DBMS_GOLDENGATE_ADM. Lorsqu'un objet de base de données figure sur la liste d'exclusion, l'exécution d'un sous-programme du package n'est pas répliquée si le sous-programme opère sur l'objet exclu.

  1. Connectez-vous à la base de données en tant qu'administrateur Oracle GoldenGate (sys (sqlplus, sqlcl ou sqldeveloper) et non en tant qu'administrateur Oracle GoldenGate.

  2. Interrogez les vues liées à la réplication procédurale Oracle GoldenGate.