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:
-
Oracle GoldenGate com Extração e Replicação.
-
Os pacotes fornecidos pelo sistema só estão funcionando em combinação com DML e DDL.
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:
-
Estabeleça conexão com o banco de dados como
sys(sqlplus,sqlcl,sqldeveloper) não como administrador do Oracle GoldenGate. -
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:
-
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 adminpwDBLOGIN USERIDALIAS ggeast DOMAIN OracleGoldenGate -
Adicione o log complementar para replicação procedural.
ADD PROCEDURETRANDATAA 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:
-
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 adminpwDBLOGIN USERIDALIAS ggeast DOMAIN OracleGoldenGate -
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:
-
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 adminpwDBLOGIN USERIDALIAS ggeast DOMAIN OracleGoldenGate -
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:
-
Estabelecer Conexão com o Extract no banco de dados de origem.
EXTRACT edbaUSERIDALIAS admin_dbA DOMAIN ORADEV -
Crie um novo arquivo de trilha.
EXTTRAIL ea -
Ative a replicação do procedimento, se ainda não tiver feito.
TRANLOGOPTIONS INTEGRATEDPARAMS (ENABLE_PROCEDURAL_REPLICATION Y) -
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:
-
Estabelecer conexão com o Replicat no banco de dados de destino.
REPLICAT rdbaUSERIDALIAS admin_dbBDOMAIN ORADEV -
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:
-
Estabelecer conexão com o Replicat no banco de dados de destino.
REPLICAT rdbaUSERIDALIAS admin_dbBDOMAIN ORADEV -
Incluir filtro para replicação de procedimento.
PROCEDURE EXCLUDE FEATURE RLS -
Especifique o parâmetro de tratamento de erros. Consulte
REPERRORna 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.
-
Estabeleça conexão com o banco de dados como
sys(sqlplus,sqlcl,sqldeveloper) não como administrador do Oracle GoldenGate. -
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:
-
O proprietário de cada pacote
-
O nome de cada pacote
-
O nome de cada procedimento
-
A release mínima do banco de dados da qual o procedimento é suportado
-
Se existe uma regra de exclusão que impede que o procedimento seja replicado para alguns objetos de banco de dados
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 |
-
Estabeleça conexão com o banco de dados como
sys(sqlplus,sqlclousqldeveloper) não como administrador do Oracle GoldenGate. -
Consulte as views relacionadas à replicação procedural do Oracle GoldenGate.