Implementação do Oracle Golden Gate em uma VM (máquina virtual) Linux do Azure

Aplica-se a: ✔️ VMs Linux

A CLI do Azure é usada para criar e gerenciar recursos do Azure da linha de comando ou em scripts. Esse guia detalha como usar a CLI do Azure para implantar um banco de dados Oracle 19c por meio da imagem na galeria do Azure Marketplace.

Este documento mostra passo a passo sobre como criar, instalar e configurar o Oracle Golden Gate em uma VM do Azure. Neste tutorial, duas máquinas virtuais são configuradas em um conjunto de disponibilidade em uma só região. O mesmo tutorial pode ser usado para configurar o Oracle GoldenGate para VMs em diferentes Zonas de Disponibilidade em uma só região do Azure ou para a instalação de VMs em duas regiões diferentes.

Antes de começar, verifique se a CLI do Azure está instalada. Para obter mais informações, consulte o Guia de instalação da CLI do Azure.

Introdução

O GoldenGate é um software de replicação lógica que permite replicação, filtragem e transformação de dados em tempo real de um banco de dados de origem para um banco de dados de destino. Esse recurso garante que as alterações no banco de dados de origem sejam replicadas em tempo real, possibilitando que o banco de dados de destino esteja atualizado com os dados mais recentes.

Use o GoldenGate principalmente para casos de replicação heterogênea, como a replicação de dados de bancos de dados de origem diferentes para um único banco de dados. Por exemplo, um data warehouse. Você também pode usá-lo para migrações multiplataforma, como de ambientes SPARC e AIX para Linux x86 e cenários avançados de alta disponibilidade e escalabilidade.

Além disso, o GoldenGate também é adequado para migrações de tempo de inatividade quase zero, pois dá suporte a migrações online com interrupção mínima para os sistemas de origem.

Embora o GoldenGate facilite a replicação bidirecional, o aplicativo deve ser configurado adequadamente. Além disso, o software permite filtragem e transformação de dados para atender a requisitos específicos de negócios, permitindo que os usuários usem os dados replicados para várias finalidades.

Preparar o ambiente

Para executar a instalação do Oracle Golden Gate, você precisa criar duas VMs do Azure no mesmo conjunto de disponibilidade. A imagem do Marketplace usada para criar as VMs é Oracle:oracle-database-19-3:oracle-database-19-0904:19.3.1.

Você também precisa estar familiarizado com o editor Unix vi e ter uma compreensão básica do X Server.

A tabela a seguir é um resumo da configuração do ambiente:

Site primário Replicar site
Versão do Oracle Oracle Database 19.3.1.0 Oracle Database 19.3.1.0
Nome do computador ggVM1 ggVM2
Sistema operacional Oracle Linux 7.x Oracle Linux 7.x
SID do Oracle CDB1 CDB1
Esquema de replicação TEST TEST
Golden Gate proprietário/replicar C ##GGADMIN REPUSER
Processo de Golden Gate EXTORA REPORA

Entrar no Azure

  1. Abra seu shell preferido no Windows, Linux ou Azure Shell.

  2. Entre na sua assinatura do Azure como comando az login. Em seguida, execute as instruções na tela.

    $ az login
    
  3. Certifique-se de estar conectado à assinatura correta verificando o nome e/ou a ID da assinatura.

    $ az account show
    
    {
      "environmentName": "XXXXX",
      "homeTenantId": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
      "id": "<SUBSCRIPTION_ID>",
      "isDefault": true,
      "managedByTenants": [],
      "name": "<SUBSCRIPTION_NAME>",
      "state": "Enabled",
      "tenantId": XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
      "user": {
        "cloudShellID": true,
        "name": "aaaaa@bbbbb.com",
        "type": "user"
      }
    }
    

Gerar chaves de autenticação

Usamos autenticação baseada em arquivo de chave com SSH para se conectar à VM do Oracle Database. Certifique-se de que seus arquivos de chave privados (nomeados id_rsa) e públicos (nomeados id_rsa.pub) sejam criados em seu shell.

A localização dos arquivos-chave depende do seu sistema de origem.

Windows: %USERPROFILE%.ssh Linux: ~/.ssh

Se eles não existirem, você pode criar um novo par de arquivos de chave.

ssh-keygen -m PEM -t rsa -b 4096

O diretório .ssh e os arquivos de chave serão criados. Para obter mais informações, veja Criar e gerenciar chaves SSH para autenticação em uma VM Linux no Azure

Criar um grupo de recursos

Para criar um grupo de recursos, use o comando az group create. Um grupo de recursos do Azure é um contêiner lógico no qual os recursos do Azure são implantados e gerenciados.

$ az group create --name GoldenGateOnAzureLab --location westus

Criar e configurar a rede

Criar rede virtual

Use o seguinte comando para criar a rede virtual que hospeda os recursos que criamos neste laboratório.

$ az network vnet create \
  --name ggVnet \
  --resource-group GoldenGateOnAzureLab \
  --address-prefixes "10.0.0.0/16" \
  --subnet-name ggSubnet1 \
  --subnet-prefixes "10.0.0.0/24"

Criar um Grupo de Segurança de Rede (NSG)

  1. Crie um grupo de segurança de rede (NSG) para bloquear sua rede virtual.

    $ az network nsg create \
      --resource-group GoldenGateOnAzureLab \
      --name ggVnetNSG
    
  2. Criar uma regra do NSG para permitir a comunicação na rede virtual.

    $ az network nsg rule create  --resource-group GoldenGateOnAzureLab --nsg-name ggVnetNSG \
        --name ggAllowVnet \
        --protocol '*' --direction inbound --priority 3400 \
        --source-address-prefix 'VirtualNetwork' --source-port-range '*' \
        --destination-address-prefix 'VirtualNetwork' --destination-port-range '*' --access allow
    
  3. Criar regra NSG para negar todas as conexões de entrada.

    $ az network nsg rule create \
      --resource-group GoldenGateOnAzureLab \
      --nsg-name ggVnetNSG \
      --name ggDenyAllInBound \
      --protocol '*' --direction inbound --priority 3500 \
      --source-address-prefix '*' --source-port-range '*' \
      --destination-address-prefix '*' --destination-port-range '*' --access deny
    
  4. Atribua o NSG à Sub-rede onde hospedamos nossos servidores.

    $ az network vnet subnet update --resource-group GoldenGateOnAzureLab --vnet-name ggVNet --name ggSubnet1 --network-security-group ggVnetNSG
    

Criar Rede do Bastion

  1. Criar a Sub-rede do Bastion. O nome da sub-rede deve ser AzureBastionSubnet.

    $ az network vnet subnet create  \
        --resource-group GoldenGateOnAzureLab \
        --name AzureBastionSubnet \
        --vnet-name ggVnet \
        --address-prefixes 10.0.1.0/24
    
  2. Criar um IP público para o Bastion.

    $ az network public-ip create \
        --resource-group GoldenGateOnAzureLab \
        --name ggBastionIP \
        --sku Standard
    
  3. Criar o recurso do Azure Bastion. Demora cerca de 10 minutos para que o recurso seja implantado.

    $ az network bastion create \
        --resource-group GoldenGateOnAzureLab \
        --name ggBastion \
        --public-ip-address ggBastionIP \
        --vnet-name ggVnet \
        --sku Standard \
        --enable-tunneling \
        --enable-ip-connect true
    

Criar VM no X Server (ggXServer)

Substitua sua senha e execute o comando a seguir para criar uma VM da estação de trabalho do Windows na qual implantamos o servidor X.

$ az vm create \
     --resource-group GoldenGateOnAzureLab \
     --name ggXServer \
     --image MicrosoftWindowsDesktop:Windows-10:win10-22h2-pro-g2:19045.2604.230207 \
     --size Standard_DS1_v2  \
     --vnet-name ggVnet \
     --subnet ggSubnet1 \
     --public-ip-sku Standard \
     --nsg "" \
     --data-disk-delete-option Delete \
     --os-disk-delete-option Delete \
     --nic-delete-option Delete \
     --admin-username azureuser \
     --admin-password <ENTER_YOUR_PASSWORD_HERE>

Conectar-se ao ggXServer por meio do Bastion

Conecte-se ao ggXServer usando o Bastion.

  1. Acesse o ggXServer no portal do Azure
  2. Localize Visão geral na navegação à esquerda
  3. Selecione Conectar>Bastion no menu na parte superior
  4. Selecionar a guia Bastion
  5. Clique em Usar Bastion

Preparar o ggXServer para executar o X Server

O X Server é necessário nas etapas posteriores deste laboratório. Execute as seguintes etapas para instalar e iniciar o X Server.

  1. Baixe o Xming X Server para Windows para ggXServer e instale com todas as opções padrão.

  2. Certifique-se de que você não selecionou Inicialização no final da instalação

  3. Inicie o aplicativo "XLAUNCH" no menu Iniciar.

  4. Selecione Várias Janelas

    Captura de tela do assistente XLaunch etapa 1.

  5. Selecione Iniciar sem cliente

    Captura de tela do assistente XLaunch etapa 2.

  6. Selecione Sem controle de acesso

    Captura de tela do assistente XLaunch etapa 3.

  7. Selecione Permitir acesso para permitir o X Server através do Firewall do Windows

    Captura de tela do assistente XLaunch etapa 4.

Se você reiniciar sua VM ggXServer, siga as etapas 2 a 6 acima para reiniciar o aplicativo X Server.

Criar máquinas virtuais no banco de dados Oracle

Neste laboratório, criamos máquinas virtuais ggVM1 e ggVM2 a partir da imagem do Oracle Database 19C. Se elas ainda não existirem na localização padrão da chave, esse comando também criará as chaves SSH. Para usar um conjunto específico de chaves, use a opção --ssh-key-value. Se você criou suas chaves SSH na seção Gerar chaves de autenticação, essas chaves serão usadas.

Ao criar uma nova máquina virtual, o parâmetro size indica o tamanho e o tipo da máquina virtual criada. Dependendo da região do Azure selecionada para criar a máquina virtual e as configurações de assinatura, alguns tamanhos e tipos de máquina virtual podem estar indisponíveis para uso. O exemplo a seguir usa o tamanho mínimo necessário neste laboratório Standard_DS1_v2. Se você quiser alterar as especificações da máquina virtual, selecione um dos tamanhos disponíveis em Tamanhos de VM do Azure. Para fins de teste, você pode escolher entre os tipos de máquinas virtuais de uso geral (série D). Para implantações de produção ou piloto, Otimizado para Memória (E-Series e M-Series) são mais adequadas.

Criar ggVM1 (primário)

$ az vm create \
     --resource-group GoldenGateOnAzureLab \
     --name ggVM1 \
     --image Oracle:oracle-database-19-3:oracle-database-19-0904:19.3.1 \
     --size Standard_DS1_v2 \
     --generate-ssh-keys \
    --admin-username azureuser \
    --vnet-name ggVnet \
    --subnet ggSubnet1 \
    --public-ip-address "" \
    --nsg "" \
    --zone 1

Criar ggVM2 (replicação)

$ az vm create \
    --resource-group GoldenGateOnAzureLab \
    --name ggVM2 \
    --image Oracle:oracle-database-19-3:oracle-database-19-0904:19.3.1 \
    --size Standard_DS1_v2  \
    --generate-ssh-keys \
    --admin-username azureuser \
    --vnet-name ggVnet \
    --subnet ggSubnet1 \
    --public-ip-address "" \
    --nsg "" \
    --zone 2

Conectar-se ao ggVM1 (primário)

Conecte-se ao ggVM1 usando o Bastion.

  1. Vá para ggVM1 no portal do Azure.
  2. Vá para Visão Geral no painel esquerdo.
  3. Selecione Conectar>Bastion no menu na parte superior
  4. Selecione a guia Bastion
  5. Selecione Usar o Bastion

Criar o banco de dados no ggVM1 (primário)

O software Oracle já está instalado na imagem do Marketplace, portanto, a próxima etapa será criar o banco de dados.

  1. Execute o software como o usuário oracle.
$ sudo su - oracle
  1. Crie o banco de dados usando o comando a seguir. Esse comando pode levar de 30 a 40 minutos para ser concluído.
$ dbca -silent \
   -createDatabase \
   -templateName General_Purpose.dbc \
   -gdbname cdb1 \
   -sid cdb1 \
   -responseFile NO_VALUE \
   -characterSet AL32UTF8 \
   -sysPassword OraPasswd1 \
   -systemPassword OraPasswd1 \
   -createAsContainerDatabase true \
   -numberOfPDBs 1 \
   -pdbName pdb1 \
   -pdbAdminPassword OraPasswd1 \
   -databaseType MULTIPURPOSE \
   -automaticMemoryManagement false \
   -storageType FS \
   -datafileDestination "/u01/app/oracle/oradata/" \
   -ignorePreReqs

A saída deve ser semelhante à seguinte resposta.

Copying database files
1% complete
2% complete
8% complete
13% complete
19% complete
27% complete
Creating and starting Oracle instance
29% complete
32% complete
33% complete
34% complete
38% complete
42% complete
43% complete
45% complete
Completing Database Creation
48% complete
51% complete
53% complete
62% complete
70% complete
72% complete
Creating Pluggable Databases
78% complete
100% complete
Look at the log file "/u01/app/oracle/cfgtoollogs/dbca/cdb1/cdb1.log" for more details.
  1. Defina as variáveis ORACLE_SID e LD_LIBRARY_PATH.
$ export ORACLE_SID=cdb1
$ export LD_LIBRARY_PATH=$ORACLE_HOME/lib
  1. Execute a seguir para adicionar ORACLE_SID e LD_LIBRARY_PATH ao arquivo .bashrc, para que essas configurações sejam salvas para entradas futuras. A variável ORACLE_HOME já deve estar definida no arquivo .bashrc.
$ sed -i '$ a export ORACLE_SID=cdb1' .bashrc
$ sed -i '$ a export LD_LIBRARY_PATH=$ORACLE_HOME/lib' .bashrc
  1. Iniciar o Oracle listener
$ lsnrctl start

Conectar-se ao ggVM2 (replicação)

Conecte-se ao ggVM2 usando o Bastion.

  1. Vá para ggVM2 no portal do Azure.
  2. Vá para Visão Geral no painel esquerdo.
  3. Selecione Conectar>Bastion no menu na parte superior
  4. Selecione a guia Bastion
  5. Selecione Usar o Bastion

Abrir portas de firewall para ggVM1

Configure o firewall para permitir conexões do ggVM1. O comando a seguir é executado no ggVM2.

$ sudo su -
$ firewall-cmd --permanent --zone=trusted --add-source=10.0.0.5
$ firewall-cmd --reload
$ exit

Criar banco de dados no ggVM2 (replicação)

  1. Alternar para o usuário oracle, se necessário
$ sudo su - oracle
  1. Criar o banco de dados
$ dbca -silent \
   -createDatabase \
   -templateName General_Purpose.dbc \
   -gdbname cdb1 \
   -sid cdb1 \
   -responseFile NO_VALUE \
   -characterSet AL32UTF8 \
   -sysPassword OraPasswd1 \
   -systemPassword OraPasswd1 \
   -createAsContainerDatabase true \
   -numberOfPDBs 1 \
   -pdbName pdb1 \
   -pdbAdminPassword OraPasswd1 \
   -databaseType MULTIPURPOSE \
   -automaticMemoryManagement false \
   -storageType FS \
   -datafileDestination "/u01/app/oracle/oradata/" \
   -ignorePreReqs
  1. Defina as variáveis ORACLE_SID e ORACLE_HOME.
$ export ORACLE_SID=cdb1
$ export LD_LIBRARY_PATH=$ORACLE_HOME/lib
  1. Execute a seguir para adicionar ORACLE_SID e LD_LIBRARY_PATH ao arquivo .bashrc, para que essas configurações sejam salvas para entradas futuras. A variável ORACLE_HOME já deve estar definida no arquivo .bashrc.
$ sed -i '$ a export ORACLE_SID=cdb1' .bashrc
$ sed -i '$ a export LD_LIBRARY_PATH=$ORACLE_HOME/lib' .bashrc
  1. Iniciar o Oracle listener
$ lsnrctl start

Configurar o GoldenGate no ggVM1

Siga as etapas nesta seção para instalar e configurar o GoldenGate.

Habilitar o modo de log de arquivos no ggVM1 (primário)

  1. Conectar-se a sqlplus
$ sqlplus / as sysdba
  1. Habilitar o log de arquivos
SQL> SELECT log_mode FROM v$database;

LOG_MODE
------------
NOARCHIVELOG

SQL> SHUTDOWN IMMEDIATE;
SQL> STARTUP MOUNT;
SQL> ALTER DATABASE ARCHIVELOG;
SQL> ALTER DATABASE OPEN;
  1. Habilite o registro em log forçado e verifique se há pelo menos um arquivo de log.
SQL> ALTER DATABASE FORCE LOGGING;
SQL> ALTER SYSTEM SWITCH LOGFILE;
SQL> ALTER SYSTEM set enable_goldengate_replication=true;
SQL> ALTER PLUGGABLE DATABASE PDB1 OPEN;
SQL> ALTER SESSION SET CONTAINER=CDB$ROOT;
SQL> ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
SQL> ALTER SESSION SET CONTAINER=PDB1;
SQL> ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
SQL> EXIT;

Baixar o software de Golden Gate

  1. Baixe o arquivo 213000_fbo_ggs_Linux_x64_Oracle_shiphome.zip da página de download do Oracle Golden Gate, sob o título de download Oracle GoldenGate 21.3.0.0.0 para Oracle no Linux x86-64.

  2. Depois de baixar o arquivo .zip para o computador cliente, use o SCP (Protocolo de Cópia Segura) para copiar os arquivos para máquinas virtuais (ggVM1 e ggVM2). O comando scp deve apontar para o caminho correto do arquivo .zip.

  3. Copiar para o ggVM1

    1. Entre e verifique se você está usando a assinatura correta, conforme descrito em Entrar no Azure

    2. Abra o túnel para sua VM de destino usando o seguinte comando do PowerShell

      $ggVM1id=$(az vm show --resource-group GoldenGateOnAzureLab --name ggVM1 --query 'id' --output tsv)
      az network bastion tunnel --name ggBastion --resource-group GoldenGateOnAzureLab --target-resource-id $ggVM1id --resource-port 22 --port 57500
      
    3. Para se conectar à VM de destino através do túnel, deixe o primeiro prompt de comando em execução e abra um segundo prompt de comando. Nesta segunda janela do prompt de comando, você pode carregar arquivos do seu computador local para a máquina virtual de destino usando o comando a seguir. O arquivo de chave id_rsa correto para acessar a máquina virtual deve residir no diretório .ssh ou você pode apontar para um arquivo de chave diferente usando o parâmetro -i para o comando scp.

       scp -P 57500 "213000_fbo_ggs_Linux_x64_Oracle_shiphome.zip"  azureuser@127.0.0.1:.
      
  4. Copiar para o ggVM2

    1. Abra o túnel para sua VM de destino usando o seguinte comando do PowerShell

      $ggVM2id=$(az vm show --resource-group GoldenGateOnAzureLab --name ggVM2 --query 'id' --output tsv)
      az network bastion tunnel --name ggBastion --resource-group GoldenGateOnAzureLab --target-resource-id $ggVM2id --resource-port 22 --port 57501
      
    2. Deixe o primeiro prompt de comando em execução e abra um segundo prompt de comando para se conectar à VM de destino através do túnel. Nesta segunda janela do prompt de comando, você pode carregar arquivos do seu computador local para a máquina virtual de destino usando o comando a seguir. O arquivo de chave id_rsa correto para acessar a máquina virtual deve residir no diretório .ssh ou você pode apontar para um arquivo de chave diferente usando o parâmetro -i para o comando scp.

      scp -P 57501 "213000_fbo_ggs_Linux_x64_Oracle_shiphome.zip"  azureuser@127.0.0.1:.
      

Instalar o software de Golden Gate

  1. Conecte-se ao ggVM1 usando o Bastion.

    1. Vá para ggVM1 no portal do Azure.
    2. Vá para Visão Geral no painel esquerdo
    3. Selecione Conectar>Bastion no menu na parte superior
    4. Selecione a guia Bastion
    5. Selecione Usar o Bastion
  2. Mova o arquivo .zip para a pasta /opt e, em seguida, alterar o proprietário

    $ sudo su -
    $ mv /home/azureuser/*.zip /opt
    
  3. Descompacte os arquivos (instale o utilitário unzip, se isso ainda não estiver instalado)

    $ yum install unzip
    $ cd /opt
    $ unzip 213000_fbo_ggs_Linux_x64_Oracle_shiphome.zip
    
  4. Altere a permissão

    $ chown -R oracle:oinstall /opt/fbo_ggs_Linux_x64_Oracle_shiphome
    $ exit
    
  5. Inicie o instalador do GoldenGate

    $ sudo su - oracle
    $ export DISPLAY=10.0.0.4:0.0
    $ cd /opt/fbo_ggs_Linux_x64_Oracle_shiphome/Disk1
    $ ./runInstaller
    

    O instalador abrirá no ggXServer.

  6. Selecione “Oracle GoldenGate para o Oracle Database 21c”. Em seguida, selecione Avançar para continuar.

    Captura de tela do assistente de instalação do GoldenGate etapa 1.

  7. Defina o local do software como /u01/app/oracle/product/19.0.0/oggcore_1, certifique-se de que a caixa Iniciar Gerenciador esteja selecionada e selecione Avançar para continuar.

    Captura de tela do assistente de instalação do GoldenGate etapa 2.

  8. Na tela de Resumo, selecione Instalar para continuar.

    Captura de tela do assistente de instalação do GoldenGate etapa 3.

  9. Aguarde a conclusão da instalação.

    Captura de tela do assistente de instalação do GoldenGate etapa 4.

  10. Selecione Fechar para continuar.

Captura de tela do assistente de instalação do GoldenGate etapa 5.

  1. Conecte-se ao ggVM2 usando o Bastion.

    1. Vá para ggVM2 no portal do Azure.
    2. Vá para Visão Geral no painel esquerdo
    3. Selecione Conectar>Bastion no menu na parte superior
    4. Selecione a guia Bastion
    5. Selecione Usar o Bastion
  2. Repita as etapas 2 a 10 acima no ggVM2

Configuração de serviço no ggVM1 (primário)

  1. Crie ou atualize o arquivo tnsnames.ora.

    $ sudo su - oracle
    $ cd $ORACLE_HOME/network/admin
    $ vi tnsnames.ora
    

    Quando o editor vi for aberto, pressione i para alternar para o modo de inserção, copie e cole o conteúdo do arquivo e pressione a tecla Esc, :wq! para salvar o arquivo.

    cdb1=
     (DESCRIPTION=
       (ADDRESS=
         (PROTOCOL=TCP)
         (HOST=localhost)
         (PORT=1521)
       )
       (CONNECT_DATA=
         (SERVER=dedicated)
         (SERVICE_NAME=cdb1)
       )
     )
    
    pdb1=
     (DESCRIPTION=
       (ADDRESS=
         (PROTOCOL=TCP)
         (HOST=localhost)
         (PORT=1521)
       )
       (CONNECT_DATA=
         (SERVER=dedicated)
         (SERVICE_NAME=pdb1)
       )
     )
    
  2. Crie as contas de usuário e de proprietário de Golden Gate.

    Observação

    A conta do proprietário deve ter o prefixo de C##.

    $ sqlplus / as sysdba
    
     SQL> CREATE USER C##GGADMIN identified by ggadmin;
     SQL> EXEC dbms_goldengate_auth.grant_admin_privilege('C##GGADMIN',container=>'ALL');
     SQL> GRANT DBA to C##GGADMIN container=all;
     SQL> connect C##GGADMIN/ggadmin
     SQL> ALTER SESSION SET CONTAINER=PDB1;
     SQL> EXIT;
    
  3. Criar conta de usuário de teste GoldenGate

    $ cd /u01/app/oracle/product/19.0.0/oggcore_1
    $ sqlplus system/OraPasswd1@pdb1
    
    SQL> CREATE USER test identified by test DEFAULT TABLESPACE USERS TEMPORARY TABLESPACE TEMP;
    SQL> GRANT connect, resource, dba TO test;
    SQL> ALTER USER test QUOTA 100M on USERS;
    SQL> connect test/test@pdb1
    SQL> @demo_ora_create
    SQL> @demo_ora_insert
    SQL> EXIT;
    
  4. Configure o arquivo de parâmetro de extração.

    Inicie a interface de linha de comando de Golden Gate (ggsci):

    $ sudo su - oracle
    $ cd /u01/app/oracle/product/19.0.0/oggcore_1
    $ ./ggsci
    
    GGSCI> DBLOGIN USERID test@pdb1, PASSWORD test
    Successfully logged into database  pdb1
    GGSCI>  ADD SCHEMATRANDATA pdb1.test
    2017-05-23 15:44:25  INFO    OGG-01788  SCHEMATRANDATA has been added on schema test.
    2017-05-23 15:44:25  INFO    OGG-01976  SCHEMATRANDATA for scheduling columns has been added on schema test.
    
    GGSCI> EDIT PARAMS EXTORA
    
  5. Pressione a tecla i para alternar para o modo de inserção e copie e cole (clique com o botão direito do mouse na janela SSH) seguindo para o arquivo de parâmetro EXTRACT. Pressione a tecla Esc, :wq! para salvar o arquivo.

    EXTRACT EXTORA
    USERID C##GGADMIN@cdb1, PASSWORD ggadmin
    RMTHOST 10.0.0.5, MGRPORT 7809
    RMTTRAIL ./dirdat/rt
    DDL INCLUDE MAPPED
    DDLOPTIONS REPORT
    LOGALLSUPCOLS
    UPDATERECORDFORMAT COMPACT
    TABLE pdb1.test.TCUSTMER;
    TABLE pdb1.test.TCUSTORD;
    
  6. Extrato de registro--extrato integrado.

    GGSCI> dblogin userid C##GGADMIN@cdb1, password ggadmin
    Successfully logged into database CDB$ROOT.
    
    GGSCI> REGISTER EXTRACT EXTORA DATABASE CONTAINER(pdb1)
    
    2023-03-03 19:37:01  INFO    OGG-02003  Extract group EXTORA successfully registered with database at SCN 2142014.
    
    GGSCI> exit
    
  7. Configurar pontos de verificação de extração e iniciar a extração em tempo real

    $ ./ggsci
    
    GGSCI>  ADD EXTRACT EXTORA, INTEGRATED TRANLOG, BEGIN NOW
    EXTRACT (Integrated) added.
    
    GGSCI>  ADD RMTTRAIL ./dirdat/rt, EXTRACT EXTORA, MEGABYTES 10
    RMTTRAIL added.
    
    GGSCI>  START EXTRACT EXTORA
    
    Sending START request to MANAGER ...
    EXTRACT EXTORA starting
    
    GGSCI > INFO ALL
    
    Program     Status      Group       Lag at Chkpt  Time Since Chkpt
    
    MANAGER     RUNNING
    EXTRACT     RUNNING     EXTORA      00:00:11      00:00:04
    
    GGSCI > EXIT
    

    Nesta etapa, você deve encontrar o SCN inicial, que será usado mais tarde, em uma seção diferente.

    $ sqlplus / as sysdba
    
    SQL> alter session set container = pdb1;
    SQL> SELECT current_scn from v$database;
    CURRENT_SCN
    -----------
       2172191
    SQL> EXIT;
    
    $ ./ggsci
    GGSCI> EDIT PARAMS INITEXT
    

    Quando o editor vi for aberto, pressione i para alternar para o modo de inserção, copie e cole o conteúdo do arquivo e pressione a tecla Esc, :wq! para salvar o arquivo.

    EXTRACT INITEXT
    USERID C##GGADMIN@cdb1, PASSWORD ggadmin
    RMTHOST 10.0.0.6, MGRPORT 7809
    RMTTASK REPLICAT, GROUP INITREP
    TABLE pdb1.test.*, SQLPREDICATE 'AS OF SCN 2172191';
    
    GGSCI> ADD EXTRACT INITEXT, SOURCEISTABLE
    Extract added.
    GGSCI> EXIT
    

Configuração de serviço no ggVM2 (replicação)

  1. Crie ou atualize o arquivo tnsnames.ora.

    $ cd $ORACLE_HOME/network/admin
    $ vi tnsnames.ora
    

    Quando o editor vi for aberto, pressione i para alternar para o modo de inserção, copie e cole o conteúdo do arquivo e pressione a tecla Esc, :wq! para salvar o arquivo.

    cdb1=
     (DESCRIPTION=
       (ADDRESS=
         (PROTOCOL=TCP)
         (HOST=localhost)
         (PORT=1521)
       )
       (CONNECT_DATA=
         (SERVER=dedicated)
         (SERVICE_NAME=cdb1)
       )
     )
    
    pdb1=
     (DESCRIPTION=
       (ADDRESS=
         (PROTOCOL=TCP)
         (HOST=localhost)
         (PORT=1521)
       )
       (CONNECT_DATA=
         (SERVER=dedicated)
         (SERVICE_NAME=pdb1)
       )
     )
    
  2. Crie uma conta de replicação.

    $ sqlplus / as sysdba
    
    SQL> ALTER SYSTEM set enable_goldengate_replication=true;
    SQL> ALTER SESSION SET CONTAINER = pdb1;
    SQL> CREATE USER REPUSER IDENTIFIED BY REP_PASS CONTAINER=CURRENT;
    SQL> GRANT DBA TO REPUSER;
    SQL> EXEC DBMS_GOLDENGATE_AUTH.GRANT_ADMIN_PRIVILEGE('REPUSER',CONTAINER=>'PDB1');
    SQL> CONNECT REPUSER/REP_PASS@PDB1
    SQL> EXIT;
    
  3. Crie uma conta de usuário de teste do GoldenGate.

    $ cd /u01/app/oracle/product/19.0.0/oggcore_1
    $ sqlplus system/OraPasswd1@pdb1
    
    SQL> CREATE USER test identified by test DEFAULT TABLESPACE USERS TEMPORARY TABLESPACE TEMP;
    SQL> GRANT connect, resource, dba TO test;
    SQL> ALTER USER test QUOTA 100M on USERS;
    SQL> CONNECT test/test@pdb1
    SQL> @demo_ora_create
    SQL> EXIT;
    
  4. Arquivo de parâmetro REPLICAT para replicar alterações.

    $ cd /u01/app/oracle/product/19.0.0/oggcore_1
    $ ./ggsci
    
    GGSCI> EDIT PARAMS REPORA
    

    Quando o editor vi for aberto, pressione i para alternar para o modo de inserção, copie e cole o conteúdo do arquivo e pressione a tecla Esc, :wq! para salvar o arquivo.

    REPLICAT REPORA
    ASSUMETARGETDEFS
    DISCARDFILE ./dirrpt/repora.dsc, PURGE, MEGABYTES 100
    DDL INCLUDE MAPPED
    DDLOPTIONS REPORT
    DBOPTIONS INTEGRATEDPARAMS(parallelism 6)
    USERID repuser@pdb1, PASSWORD REP_PASS
    MAP pdb1.test.*, TARGET pdb1.test.*;
    
  5. Configure um ponto de verificação de replicação.

    GGSCI> ADD REPLICAT REPORA, INTEGRATED, EXTTRAIL ./dirdat/rt
    GGSCI> EDIT PARAMS INITREP
    

    Quando o editor vi for aberto, pressione i para alternar para o modo de inserção, copie e cole o conteúdo do arquivo e pressione a tecla Esc, :wq! para salvar o arquivo.

    REPLICAT INITREP
    ASSUMETARGETDEFS
    DISCARDFILE ./dirrpt/tcustmer.dsc, APPEND
    USERID repuser@pdb1, PASSWORD REP_PASS
    MAP pdb1.test.*, TARGET pdb1.test.*;
    
    GGSCI> ADD REPLICAT INITREP, SPECIALRUN
    GGSCI> EXIT
    

Configurar replicação (ggVM1 e ggVM2)

1. Configurar a replicação em ggVM2 (replicação)

Entrar no ggsci.

$ cd /u01/app/oracle/product/12.1.0/oggcore_1
$ ./ggsci
GGSCI> EDIT PARAMS MGR

Atualize o arquivo com o seguinte.

PORT 7809
ACCESSRULE, PROG *, IPADDR *, ALLOW

Reinicie o serviço do Gerenciador.

GGSCI> STOP MGR
GGSCI> START MGR
GGSCI> EXIT

2. Configurar a replicação em ggVM1 (primário)

Inicie o carregamento inicial e verifique se há erros.

$ cd /u01/app/oracle/product/19.0.0/oggcore_1
$ ./ggsci
GGSCI> START EXTRACT INITEXT
GGSCI> VIEW REPORT INITEXT

3. Configurar a replicação em ggVM2 (replicação)

Altere o número SCN com o número obtido antes.

$ cd /u01/app/oracle/product/19.0.0/oggcore_1
$ ./ggsci
START REPLICAT REPORA, AFTERCSN 2172191

A replicação começou, você pode testá-la, inserindo novos registros em tabelas de TESTE.

Exibir o status do trabalho e solução de problemas

Exibir relatórios

  • Para exibir relatórios no ggVM1, execute os seguintes comandos.

    GGSCI> VIEW REPORT EXTORA
    
  • Para exibir relatórios no ggVM2, execute os seguintes comandos.

    GGSCI> VIEW REPORT REPORA
    

Exibir o status e histórico

  • Para exibir o status e histórico no ggVM1, execute os seguintes comandos.

    GGSCI> DBLOGIN USERID C##GGADMIN@CDB1, PASSWORD ggadmin
    GGSCI> INFO EXTRACT EXTORA, DETAIL
    
  • Para exibir o status e histórico no ggVM2, execute os seguintes comandos.

    GGSCI> DBLOGIN USERID REPUSER@PDB1 PASSWORD REP_PASS
    GGSCI> INFO REP REPORA, DETAIL
    
    $ sqlplus test/test@pdb1
    
    SQL> select * from TCUSTMER;
    SQL> select * from TCUSTORD;
    

Observar replicação de dados

  1. Conectar-se ao banco de dados primário no ggVM1

    $ sqlplus test/test@pdb1
    
  2. Selecionar registros existentes da tabela

    SQL> select * from TCUSTORD;
    
  3. Criar um registro de teste

    SQL> INSERT INTO TCUSTORD VALUES ('OLLJ',TO_DATE('11-APR-99'),'CYCLE',400,16000,1,102);
    SQL> COMMIT;
    SQL> EXIT;
    
  4. Observe a transação coletada por GoldenGate (observe o valor total de inserções)

$ cd /u01/app/oracle/product/19.0.0/oggcore_1
$ ./ggsci
GGSCI> STATS EXTORA
  Sending STATS request to Extract group EXTORA ...

  Start of statistics at 2023-03-24 19:41:54.

  DDL replication statistics (for all trails):

  *** Total statistics since extract started     ***
  Operations                           0.00
  Mapped operations                    0.00
  Unmapped operations                    0.00
  Other operations                    0.00
  Excluded operations                    0.00

  Output to ./dirdat/rt:

  Extracting from PDB1.TEST.TCUSTORD to PDB1.TEST.TCUSTORD:

  *** Total statistics since 2023-03-24 19:41:34 ***
     Total inserts                              1.00
     Total updates                              0.00
     Total deletes                              0.00
     Total upserts                              0.00
     Total discards                             0.00
     Total operations                           1.00

  *** Daily statistics since 2023-03-24 19:41:34 ***
     Total inserts                              1.00
     Total updates                              0.00
     Total deletes                              0.00
     Total upserts                              0.00
     Total discards                             0.00
     Total operations                           1.00

  *** Hourly statistics since 2023-03-24 19:41:34 ***
     Total inserts                              1.00
     Total updates                              0.00
     Total deletes                              0.00
     Total upserts                              0.00
     Total discards                             0.00
     Total operations                           1.00

  *** Latest statistics since 2023-03-24 19:41:34 ***
     Total inserts                              1.00
     Total updates                              0.00
     Total deletes                              0.00
     Total upserts                              0.00
     Total discards                             0.00
     Total operations                           1.00

  End of statistics.
  1. Conectar-se ao banco de dados primário no ggVM2

    $ sqlplus test/test@pdb1
    
  2. Verificar se o novo registro é replicado

    SQL> select * from TCUSTORD;
    
     CUST ORDER_DAT PRODUCT_   ORDER_ID PRODUCT_PRICE PRODUCT_AMOUNT TRANSACTION_ID
     ---- --------- -------- ---------- ------------- -------------- --------------
     OLLJ 11-APR-99 CYCLE       400   16000      1    102
     WILL 30-SEP-94 CAR       144   17520      3    100
     JANE 11-NOV-95 PLANE       256  133300      1    100
    

A instalação e a configuração do GoldenGate no Oracle Linux foram concluídas.

Excluir a VM ggXServer

A VM ggXServer só é usada durante a configuração. Você pode excluí-lo com segurança após concluir este documento de laboratório, mas mantenha a configuração do laboratório GoldenGate no Azure intacta.

$ az vm delete --resource-group GoldenGateOnAzureLab --name ggXServer --force-deletion yes

$ az network public-ip delete --resource-group GoldenGateOnAzureLab --name ggXServerPublicIP

Excluir o GoldenGate na instalação do Azure Lab

Quando não for mais necessário, o comando a seguir poderá ser usado para remover o grupo de recursos, a VM e todos os recursos relacionados a esse laboratório.

$ az group delete --name GoldenGateOnAzureLab

Próximas etapas

Tutorial Criar máquinas virtuais altamente disponíveis

Explorar as amostras de CLI de implantação de VM