Migração de Banco de Dados Oracle On-Premises para ADB@Azure com ZDM e Oracle GoldenGate: Um Guia Analítico
TL;DR: Este artigo analisa a migração de bancos Oracle on-premises para ADB@Azure usando ZDM e GoldenGate, com foco em near-zero downtime. A conclusão principal é que a combinação de automação do ZDM, replicação contínua do GoldenGate e paralelismo do Data Pump oferece um caminho robusto, mas exige cuidados específicos em ambientes brasileiros, como latência de rede entre regiões Azure e conformidade com a LGPD. O guia aborda desde a preparação da origem até o cutover, com recomendações práticas para engenheiros.
Migrar bancos de dados Oracle de ambientes on-premises para o Oracle Autonomous Database on Azure (ADB@Azure) é uma decisão estratégica que pode trazer ganhos de escalabilidade, redução de custos operacionais e maior disponibilidade. No entanto, o processo exige planejamento cuidadoso, especialmente quando o objetivo é minimizar o downtime. A combinação de Oracle Zero Downtime Migration (ZDM) e Oracle GoldenGate (OGG) surge como a abordagem mais madura para cenários de migração online com replicação contínua.
Para empresas brasileiras, além dos desafios técnicos, é preciso considerar latência de rede entre datacenters locais e regiões Azure, conformidade com a LGPD durante a transferência de dados e a necessidade de manter equipes capacitadas em ferramentas como GoldenGate. Este artigo interpreta o passo a passo oficial da Oracle, destacando pontos críticos e recomendações práticas para times de engenharia e gestores de TI.
1. Architecture Overview
O setup de migração consiste em:
- Source Database: Banco Oracle on-premises
- GoldenGate Hub VM: Máquina virtual dedicada para o hub de replicação
- ZDM Server: Servidor responsável pela automação da migração
- Target Database: ADB@Azure
- NFS Storage: Armazenamento compartilhado para transferência do Data Pump
O fluxo de migração segue estas etapas:
- Preparar o banco de origem
- Configurar replicação GoldenGate
- Preparar o target ADB@Azure
- Configurar a VM do GoldenGate
- Configurar o servidor ZDM
- Executar avaliação ZDM
- Executar migração online lógica
- Monitorar lag do GoldenGate
- Realizar cutover
2. Preparação do Banco de Origem (ZDM Requirements)
Requisitos de SSH
- Adicionar o usuário Oracle ao grupo de SO necessário
- Gerar par de chaves SSH para o usuário Oracle (
ssh-keygen -t rsa) - Copiar a chave privada para o servidor ZDM
Configuração de Parâmetros do Banco
Execute os seguintes comandos SQL:
alter system set PGA_AGGREGATE_LIMIT=0 scope=both sid='*';
grant exempt access policy to SYSTEM;
alter system set streams_pool_size=2G scope=both;
alter system set global_names=false;
Ponto de atenção para empresas brasileiras: O parâmetro
PGA_AGGREGATE_LIMIT=0desabilita o limite de PGA, o que pode ser necessário para grandes volumes de dados, mas deve ser monitorado para evitar consumo excessivo de memória no servidor de origem.
3. Como Habilitar os Requisitos do GoldenGate?
Ativar ARCHIVELOG Mode
shutdown immediate;
startup mount;
alter database archivelog;
alter database open;
select log_mode from v$database;
Ativar FORCE LOGGING
alter database force logging;
select force_logging from v$database;
Ativar Supplemental Logging
select minimal from dba_supplemental_logging;
alter database add supplemental log data;
select minimal from dba_supplemental_logging;
Ativar Replicação GoldenGate
alter system set ENABLE_GOLDENGATE_REPLICATION=TRUE scope=both;
Criar Usuário GGADMIN
create user ggadmin identified by ******** default tablespace users temporary tablespace temp;
grant connect, resource to ggadmin;
grant unlimited tablespace to ggadmin;
alter user ggadmin quota 10G on users;
grant select any dictionary to ggadmin;
grant create view to ggadmin;
grant execute on dbms_lock to ggadmin;
exec dbms_goldengate_auth.GRANT_ADMIN_PRIVILEGE('ggadmin');
grant execute on DBMS_SCHEDULER to ggadmin;
grant select any sequence to ggadmin;
grant alter system to ggadmin;
grant alter database to ggadmin;
grant logmining to ggadmin;
4. Preparação do Target ADB@Azure
Ações recomendadas:
- Desabilitar jobs automáticos de manutenção
- Escalar ECPU temporariamente durante a migração
- Criar usuário GGADMIN
- Aplicar grants GoldenGate
Exemplo:
CREATE USER ggadmin IDENTIFIED BY <password>;
GRANT CONNECT, RESOURCE TO ggadmin;
GRANT CREATE SESSION, ALTER SESSION TO ggadmin;
GRANT SELECT ANY DICTIONARY TO ggadmin;
GRANT FLASHBACK ANY TABLE TO ggadmin;
GRANT LOGMINING TO ggadmin;
5. Configuração da VM do GoldenGate
Requisitos de Infraestrutura
- NFS montado
- CPU / Memória / Disco suficientes
- Docker Engine instalado
- Imagem do container GoldenGate baixada do OCI Marketplace
Instalação do Docker (em ambientes restritos)
Em ambientes corporativos brasileiros sem acesso à internet, é comum precisar baixar manualmente os RPMs:
# Baixar RPM e copiar para a VM
yum install docker-engine-*.rpm
# Iniciar Docker
sudo systemctl enable --now docker
sudo systemctl status docker
docker info
Carregar Imagem GoldenGate Docker
docker load < ./ora23ai-2113000.tar
docker image list
Desabilitar IPv6 no NGINX (requerido em ambientes restritos)
Dentro do container:
docker run -it --entrypoint=/bin/bash <goldengate-image>
# Editar /etc/nginx/conf.d/ogg.conf
# Comentar linhas de IPv6:
# listen [::]:443 ssl;
# Sair e persistir configuração com volume mount
Alterar Diretório Root do Docker (Opcional)
Se /var/lib/docker tiver espaço limitado:
systemctl stop docker
rsync -aP /var/lib/docker /appdata/gg_docker
vi /etc/docker/daemon.json
# Adicionar: { "data-root": "/appdata/gg_docker/docker" }
systemctl start docker
docker info | grep "Docker Root Dir"
6. Configuração do Wallet ADB dentro do GoldenGate
Copie o wallet ZIP para o container:
mv Wallet_xxx.zip /home/ogg/
mkdir /u02/Deployment/etc/adb
unzip Wallet_xxx.zip -d /u02/Deployment/etc/adb/
Atualize sqlnet.ora com: DIRECTORY="/u02/Deployment/etc/adb"
Atualize /etc/hosts com:
- ADB hostname
- Source DB hostname
- ZDM server hostname
7. Configuração do Servidor ZDM
Pré-requisitos
- Criar usuário
zdmuser - Instalar ZDM 21c ou superior
- Montar NFS storage
- Configurar variáveis de ambiente:
export ZDMHOME=/home/zdmuser/zdmhome
export ZDMBASE=/home/zdmuser/zdmbase
Criar Workspace de Migração
mkdir /home/zdmuser/logical_online_adb_nfs
vi logical_online_adb_nfs.rsp
8. Configuração do Response File ZDM
Parâmetros críticos:
MIGRATION_METHOD=ONLINE_LOGICAL
DATA_TRANSFER_MEDIUM=NFS
# Data Pump
DATAPUMPSETTINGS_JOBMODE=SCHEMA
DATAPUMPSETTINGS_DATAPUMPPARAMETERS_EXPORTPARALLELISMDEGREE=12
DATAPUMPSETTINGS_DATAPUMPPARAMETERS_IMPORTPARALLELISMDEGREE=18
# Source
SOURCEDATABASE_CONNECTIONDETAILS_HOST=<source-host>
SOURCEDATABASE_ADMINUSERNAME=SYSTEM
SOURCEDATABASE_GGADMINUSERNAME=ggadmin
# Target
TARGETDATABASE_ADMINUSERNAME=ADMIN
TARGETDATABASE_GGADMINUSERNAME=ggadmin
# GoldenGate Hub
GOLDENGATEHUB_URL=https://<goldengate-vm-ip>
GOLDENGATEHUB_ALLOWSELFSIGNEDCERTIFICATE=TRUE
# Wallet
TARGETDATABASE_CONNECTIONDETAILS_TLSDETAILS_CREDENTIALSLOCATION=/home/zdmuser/wallet
9. Execução da Avaliação ZDM
Antes da migração, valide a configuração:
$ZDMHOME/bin/zdmcli migrate database \
-rsp logical_online_adb_nfs.rsp \
-skipadvisor \
-sourcenode <source-node> \
-sourcesid <source-sid> \
-srcauth dbuser \
-srcarg1 user:oracle \
-srcarg2 identity_file:/path/id_rsa \
-eval
10. Execução da Migração Online
Após avaliação bem-sucedida:
$ZDMHOME/bin/zdmcli migrate database \
-rsp logical_online_adb_nfs.rsp \
-skipadvisor \
-sourcenode <source-node> \
-sourcesid <source-sid> \
-srcauth dbuser \
-srcarg1 user:oracle \
-srcarg2 identity_file:/path/id_rsa \
-pauseafter ZDM_MONITOR_GG_LAG
O parâmetro -pauseafter ZDM_MONITOR_GG_LAG pausa a migração após o lag do GoldenGate ser monitorado, permitindo que a equipe verifique a consistência antes do cutover.
11. Atividades Automatizadas pelo ZDM
O ZDM executa automaticamente:
- Criação do Extract GoldenGate
- Configuração do Replicat
- Exportação/Importação com Data Pump
- Carga inicial
- Replicação contínua
- Monitoramento de lag
- Orquestração do cutover
12. Como Monitorar o Progresso da Migração?
Consulte jobs de migração:
$ZDMHOME/bin/zdmcli query job -jobid <jobid>
Monitore:
- GoldenGate lag
- Status do Extract
- Status do Replicat
- Conclusão do Data Pump
- Sincronização do target
13. Melhores Práticas
Recomendações de Performance
- Escalar ECPU do ADB durante a migração
- Usar alto paralelismo no Data Pump (12 export, 18 import)
- Garantir espaço em disco adequado para trail files
- Otimizar throughput do NFS
Recomendações Operacionais
- Validar supplemental logging antes de iniciar
- Testar conectividade do wallet independentemente
- Monitorar lag do GoldenGate continuamente
- Manter estratégia de rollback preparada até o cutover
Conclusão
Usar Oracle ZDM com GoldenGate proporciona uma abordagem robusta de migração com near-zero downtime para bancos Oracle on-premises para ADB@Azure. A combinação de automação do ZDM, replicação do GoldenGate, paralelismo do Data Pump e escalabilidade do Autonomous Database garante um processo confiável, escalável e operacionalmente eficiente. Esses passos não se limitam ao ADB@Azure; podem ser adaptados para outros ambientes multicloud como AWS e GCP, desde que o target seja um Oracle Autonomous Database.
Para empresas brasileiras, o diferencial está no planejamento prévio: realizar provas de conceito com dados reais, considerar a latência entre regiões Azure (especialmente se o on-premises estiver em datacenter local) e envolver as equipes de segurança e compliance desde o início. A migração online é viável, mas exige disciplina no monitoramento do lag e validação contínua.
Perguntas Frequentes
-
Qual o principal benefício de usar ZDM e GoldenGate nessa migração?
A combinação permite uma migração online com near-zero downtime, pois o GoldenGate mantém replicação contínua enquanto o ZDM orquestra o Data Pump para carga inicial e o cutover. Isso reduz drasticamente o tempo de indisponibilidade em comparação a métodos offline. -
Preciso configurar o GoldenGate em uma VM separada?
Sim, o guia recomenda uma VM dedicada para o hub do GoldenGate, com Docker e imagem oficial OCI. Em ambientes restritos, é necessário baixar manualmente os pacotes e desabilitar IPv6 no NGINX, conforme detalhado no passo 5. -
Quais são os principais pontos de atenção para empresas brasileiras?
Além de latência de rede entre regiões Azure, é crucial validar a conectividade do wallet, garantir que o NFS tenha throughput adequado e considerar a necessidade de compliance com a LGPD durante a transferência de dados. O ZDM evaluation deve ser executado antes da migração real. -
É possível usar essa mesma abordagem para migrar para AWS ou GCP?
Sim, o artigo menciona que os passos não se limitam ao ADB@Azure, podendo ser adaptados para outros provedores multicloud, desde que o target seja um Oracle Autonomous Database rodando na nuvem do provedor.
Artigo originalmente publicado por Anupam Abhishek em cloud-infrastructure.