Replicação Procedural

Saiba mais sobre replicação de procedimentos e como configurá-la.

Sobre a Replicação Procedural

A replicação de procedimentos está disponível apenas com o Oracle AI Database. O Oracle GoldenGate usa replicação procedural para replicar procedimentos PL/SQL fornecidos pelo Oracle AI Database, evitando o envio e a aplicação de registros de alto volume geralmente gerados por essas operações. A replicação de procedimentos implementa alterações de dicionário que controlam o comportamento do usuário e da sessão e a troca de objetos no dicionário.

A replicação de procedimentos não está relacionada à replicação das instruções CREATE, ALTER e DROP (ou DDL), mas sim à replicação de uma chamada de procedimento como:

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

Em oposição a:

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

Depois de ativar a replicação procedural, as chamadas para procedimentos nos pacotes fornecidos pelo Oracle AI Database em um banco de dados são replicadas para um ou mais outros bancos de dados e, em seguida, executadas nesses bancos de dados. Por exemplo, uma chamada para subprogramas no pacote DBMS_REDEFINITION pode executar uma redefinição on-line de uma tabela. Se a tabela for replicada em vários bancos de dados e você quiser que a mesma redefinição on-line seja executada na tabela em cada banco de dados, poderá fazer as chamadas para os subprogramas no pacote DBMS_REDEFINITION em um banco de dados, e o Oracle GoldenGate poderá replicar essas chamadas para os outros bancos de dados.

Para dar suporte à replicação procedural, seu Oracle AI Database deve ser configurado para identificar procedimentos que estão ativados para essa otimização.

Para usar a replicação de procedimentos, os seguintes pré-requisitos devem ser atendidos:

Visão Geral do Processo de Replicação Procedural

A replicação de procedimentos usa um registro de trilha para garantir que informações suficientes sejam encapsuladas com o registro.

Para usar a replicação procedural do Oracle GoldenGate, você precisa ativá-la. Seu Oracle AI Database deve ter um mecanismo integrado para identificar os procedimentos ativados para essa otimização.

Os pragmas PL/SQL são usados para indicar quais procedimentos podem ser replicados. Quando o pragma é especificado, um callback é feito para o Logminer na entrada e saída da rotina. O callback fornece o nome da chamada e dos argumentos do procedimento e indica se o procedimento foi encerrado com sucesso ou com um erro. O Logminer aumenta o fluxo de redo com as informações dos callbacks. Para procedimentos suportados, o redo normal gerado pelo procedimento é suprimido e apenas a chamada do procedimento é replicada.

Um novo registro de trilha é gerado para identificar a replicação procedural. Esse registro de trilha aproveita o formato de dados da coluna de trilha existente para argumentos passados para procedimentos PL/SQL. Para LOBs, os dados são passados em blocos semelhantes ao formato de trilha existente para LOBs. Este registro de trilha tem informações suficientes para repetir o procedimento no estado em que se encontra no destino.

Quando você ativa a replicação procedural, ela impede a gravação de registros individuais afetados pelo procedimento no arquivo de trilha.

Se for encontrado um erro ao aplicar um procedimento PL/SQL, o Replicat poderá repetir todo o procedimento PL/SQL.

Determinando se a Replicação Procedural Está Ativada

Use a função GG_PROCEDURE_REPLICATION_ON no pacote DBMS_GOLDENGATE_ADM para determinar se a replicação procedural do Oracle GoldenGate está ativada ou desativada.

Se quiser usar o Oracle GoldenGate em um ambiente do Oracle AI Database Vault com replicação procedural, defina os privilégios apropriados. Consulte o Oracle AI Database Vault Administrator's Guide.

Para ativar a replicação procedural:

  1. Estabeleça conexão com o banco de dados como sys (sqlplus, sqlcl, sqldeveloper) não como administrador do Oracle GoldenGate.

  2. Execute a função GG_PROCEDURE_REPLICATION_ON.

Exemplo 9-1 Executando a Função 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;
/

Ativando e Desativando o Log Complementar

O Oracle GoldenGate fornece comandos para permitir que você ative ou desative o log complementar de procedimentos.

Para ativar o registro em log complementar:

  1. Estabeleça conexão com o banco de dados de origem como administrador do Oracle GoldenGate com DBLOGIN.

    CONNECT https://localhost:9000 DEPLOYMENT demo AS ggadmin PASSWORD adminpw
    DBLOGIN USERIDALIAS ggeast DOMAIN OracleGoldenGate
  2. Adicione o log complementar para replicação procedural.

    ADD PROCEDURETRANDATA

    A saída mostra:

    INFO OGG-13005 PROCEDURETRANDATA supplemental logging has been enabled.

O registro em log complementar está ativado para replicação de procedimento.

Para desativar o log complementar:

  1. Estabeleça conexão com o banco de dados de origem como administrador do Oracle GoldenGate com dblogin.

    CONNECT https://localhost:9000 DEPLOYMENT demo AS ggadmin PASSWORD adminpw
    DBLOGIN USERIDALIAS ggeast DOMAIN OracleGoldenGate
  2. Remova o registro em log complementar para a replicação do procedimento.

    DELETE PROCEDURETRANDATA

O log complementar está desativado para replicação do procedimento.

Para exibir informações sobre o registro em log complementar:

  1. Estabeleça conexão com o banco de dados de origem como administrador do Oracle GoldenGate com dblogin.

    CONNECT https://localhost:9000 DEPLOYMENT demo AS ggadmin PASSWORD adminpw
    DBLOGIN USERIDALIAS ggeast DOMAIN OracleGoldenGate
  2. Exiba informações de log complementares para replicação de procedimentos.

    INFO PROCEDURETRANDATA

Informações complementares de registro em log para replicação de procedimentos são exibidas.

Filtrando Recursos para Replicação de Procedimentos

Você pode especificar quais procedimentos e pacotes deseja incluir ou excluir para a replicação de procedimentos.

Os pacotes e procedimentos suportados são agrupados usando grupos de recursos. Use o parâmetro de procedimento com a palavra-chave INCLUDE ou EXCLUDE para filtrar recursos para replicação de procedimento.

No parâmetro de procedimento, INCLUDE ou EXCLUDE especificam o início de uma cláusula de filtragem. Eles especificam os procedimentos a serem replicados (INCLUDE) ou filtrados (EXCLUDE). A cláusula de filtragem deve consistir na palavra-chave INCLUDE ALL_SUPPORTED ou EXCLUDE ALL_SUPPORTED seguida de qualquer combinação válida das outras opções de filtragem do parâmetro de procedimento. O filtro EXCLUDE tem precedência sobre qualquer filtro INCLUDE que contenha os mesmos critérios.

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

Incluindo todos os pacotes fornecidos pelo sistema em Extract:

  1. Estabelecer Conexão com o Extract no banco de dados de origem.

    EXTRACT edba

    USERIDALIAS admin_dbA DOMAIN ORADEV

  2. Crie um novo arquivo de trilha.

    EXTTRAIL ea

  3. Ative a replicação do procedimento, se ainda não tiver feito.

    TRANLOGOPTIONS INTEGRATEDPARAMS (ENABLE_PROCEDURAL_REPLICATION Y)

  4. Incluir filtro para replicação de procedimento.

    PROCEDURE INCLUDE FEATURE ALL_SUPPORTED

Você incluiu com êxito todos os pacotes fornecidos pelo sistema para replicação de procedimento.

Excluindo pacotes específicos no Replicat:

  1. Estabelecer conexão com o Replicat no banco de dados de destino.

    REPLICAT rdba

    USERIDALIAS admin_dbBDOMAIN ORADEV

  2. Incluir filtro para replicação de procedimento.

    PROCEDURE EXCLUDE FEATURE RLS

Você excluiu com êxito pacotes específicos para replicação de procedimento.

Tratando Erros de Replicação Procedural

A replicação de procedimentos usa o parâmetro REPERROR para configurar o comportamento do Replicat quando ocorre um erro de procedimento.

Por padrão, o processo Replicat terá término anormal quando ocorrer replicação de procedimento, portanto, o uso das seguintes etapas configura tratamento de erros:

  1. Estabelecer conexão com o Replicat no banco de dados de destino.

    REPLICAT rdba

    USERIDALIAS admin_dbBDOMAIN ORADEV

  2. Incluir filtro para replicação de procedimento.

    PROCEDURE EXCLUDE FEATURE RLS

  3. Especifique o parâmetro de tratamento de erros. Consulte REPERROR na Referência de Parâmetros e Funções do Oracle GoldenGate para obter outras opções.

    REPERROR (PROCEDURE, DISCARD)

Você tratou com sucesso erros de replicação de procedimentos.

Listando os Procedimentos Suportados para Replicação do Oracle GoldenGate Procedural

A view DBA_GG_SUPPORTED_PROCEDURES exibe informações sobre os pacotes suportados para replicação procedural do Oracle GoldenGate.

Quando há suporte para um procedimento e a replicação procedural do Oracle GoldenGate está ativada, as chamadas para o procedimento são replicadas, a menos que o procedimento seja excluído especificamente.

  1. Estabeleça conexão com o banco de dados como sys (sqlplus, sqlcl, sqldeveloper) não como administrador do Oracle GoldenGate.

  2. Consulte a exibição DBA_GG_SUPPORTED_PROCEDURES.

Exemplo 9-2 Exibindo Informações sobre os Pacotes Suportados para Replicação de Procedimentos do Oracle GoldenGate

Esta consulta exibe as seguintes informações sobre os pacotes:

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;

Sua saída é semelhante à seguinte:

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

Monitorando a Replicação Procedural do Oracle GoldenGate

Um conjunto de views do dicionário de dados permite monitorar a replicação procedural do Oracle GoldenGate.

Você pode usar as seguintes views para monitorar a replicação procedural do Oracle GoldenGate:

Exibir Descrição
DBA_GG_SUPPORTED_PACKAGES

Fornece detalhes sobre pacotes suportados para replicação procedural do Oracle GoldenGate.

Quando há suporte para um pacote e a replicação procedural do Oracle GoldenGate está ativada, as chamadas para subprogramas no pacote são replicadas.

DBA_GG_SUPPORTED_PROCEDURES Fornece detalhes sobre os procedimentos suportados para replicação procedural do Oracle GoldenGate.
DBA_GG_PROC_OBJECT_EXCLUSION

Fornece detalhes sobre todos os objetos de banco de dados que estão na lista de exclusão para replicação procedural do Oracle GoldenGate.

Um objeto de banco de dados é adicionado à lista de exclusão usando o procedimento INSERT_PROCREP_EXCLUSION_OBJ no pacote DBMS_GOLDENGATE_ADM. Quando um objeto de banco de dados está na lista de exclusão, a execução de um subprograma no pacote não é replicada se o subprograma opera no objeto excluído.

  1. Estabeleça conexão com o banco de dados como sys (sqlplus, sqlcl ou sqldeveloper) não como administrador do Oracle GoldenGate.

  2. Consulte as views relacionadas à replicação procedural do Oracle GoldenGate.