Implementar o Oracle Golden Gate numa máquina virtual do Linux do Azure

Aplica-se a: ✔️ VMs do Linux

A CLI do Azure é utilizada para criar e gerir recursos do Azure a partir da linha de comandos ou em scripts. Este guia detalha como utilizar a CLI do Azure para implementar uma base de dados Oracle 19c a partir da imagem da galeria de Azure Marketplace.

Este documento mostra-lhe como criar, instalar e configurar o Oracle Golden Gate numa VM do Azure. Neste tutorial, duas máquinas virtuais são configuradas num conjunto de disponibilidade numa única região. O mesmo tutorial pode ser utilizado para configurar o OracleGolden Gate para VMs em diferentes Zonas de Disponibilidade numa única região do Azure ou para VMs configuradas em duas regiões diferentes.

Antes de começar, certifique-se de que a CLI do Azure foi instalada. Para obter mais informações, veja Guia de instalação da CLI do Azure.

Introdução

O GoldenGate é um software de replicação lógica que permite a replicação, filtragem e transformação em tempo real de dados de uma base de dados de origem para uma base de dados de destino. Esta funcionalidade garante que as alterações na base de dados de origem são replicadas em tempo real, o que possibilita que a base de dados de destino esteja atualizada com os dados mais recentes.

Utilize o GoldenGate principalmente para casos de replicação heterogéneos, como replicar dados de diferentes bases de dados de origem para uma base de dados individual. Por exemplo, um armazém de dados. Também pode utilizá-lo para migrações entre plataformas, como, por exemplo, em ambientes SPARC e AIX para Linux x86 e cenários avançados de elevada disponibilidade e escalabilidade.

Além disso, o GoldenGate também é adequado para migrações de tempo de inatividade quase zero, uma vez que suporta migrações online com interrupções mínimas nos sistemas de origem.

Embora o GoldenGate facilite a replicação bidirecional, a aplicação tem de ser configurada em conformidade. Além disso, o software permite filtrar e transformar dados para satisfazer requisitos empresariais específicos, permitindo que os utilizadores utilizem os dados replicados para várias finalidades.

Preparar o ambiente

Para efetuar a instalação do Oracle Golden Gate, tem de criar duas VMs do Azure no mesmo conjunto de disponibilidade. A imagem do Marketplace que utiliza para criar as VMs é Oracle:oracle-database-19-3:oracle-database-19-0904:19.3.1.

Também tem de estar familiarizado com o Editor Unix vi e ter uma compreensão básica do X Server.

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

Site primário Replicar site
Versão oracle Oracle Database 19.3.1.0 Oracle Database 19.3.1.0
Nome do computador ggVM1 ggVM2
Sistema operativo Oracle Linux 7.x Oracle Linux 7.x
Oracle SID CDB1 CDB1
Esquema de replicação TESTE TESTE
Proprietário/replicação do Golden Gate C##GGADMIN REPUSER
Processo golden gate EXTORA REPORA

Iniciar sessão no Azure

  1. Abra a shell preferida no Windows, Linux ou Azure Shell.

  2. Inicie sessão na sua subscrição do Azure com o comando az login . Em seguida, siga as instruções apresentadas no ecrã.

    $ az login
    
  3. Certifique-se de que está ligado à subscrição correta ao verificar o nome e/ou ID da subscrição.

    $ 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

Utilizamos a autenticação baseada em ficheiros chave com ssh para ligar à VM da Base de Dados Oracle. Certifique-se de que os seus ficheiros de chave privados (denominados id_rsa) e públicos (denominados id_rsa.pub) são criados na shell.

A localização dos ficheiros principais depende do seu sistema de origem.

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

Se não existirem, pode criar um novo par de keyfile.

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

O diretório .ssh e os ficheiros de chave são criados. Para obter mais informações, veja Criar e gerir chaves SSH para autenticação numa VM do Linux no Azure

Criar um grupo de recursos

Para criar um grupo de recursos, utilize o comando az group create . Um grupo de recursos do Azure é um contentor lógico no qual os recursos do Azure são implementados e geridos.

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

Criar e configurar a rede

Criar a rede virtual

Utilize o seguinte comando para criar a rede virtual que aloja 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 a rede virtual.

    $ az network nsg create \
      --resource-group GoldenGateOnAzureLab \
      --name ggVnetNSG
    
  2. Crie uma regra NSG para permitir a comunicação dentro da 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 ligaçõ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 alojamos os nossos servidores.

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

Criar Rede bastion

  1. Criar sub-rede do Bastion. O nome da sub-rede tem de ser AzureBastionSubnet

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

    $ az network public-ip create \
        --resource-group GoldenGateOnAzureLab \
        --name ggBastionIP \
        --sku Standard
    
  3. Crie o recurso do Azure Bastion. O recurso demora cerca de 10 minutos a ser implementado.

    $ 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 do Servidor X (ggXServer)

Substitua a palavra-passe e execute o seguinte comando para criar uma VM da estação de trabalho do Windows onde implementamos o X Server.

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

Ligar ao ggXServer através do Bastion

Ligue-se ao ggXServer com o Bastion.

  1. Navegue para ggXServer a partir de portal do Azure.
  2. Aceda a Descrição Geral no painel esquerdo
  3. Selecione Ligar>o Bastion no menu na parte superior
  4. Selecione o separador Bastion
  5. Clique em Utilizar o Bastion

Preparar o ggXServer para executar o Servidor X

O Servidor X é necessário para os passos posteriores deste laboratório. Execute os seguintes passos para instalar e iniciar o X Server.

  1. Transfira o Xming X Server para Windows paraggXServer e instale com todas as opções predefinidas.

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

  3. Inicie a aplicação "XLAUNCH" a partir do menu Iniciar.

  4. Selecionar Múltiplos Windows

    Captura de ecrã do assistente XLaunch passo 1.

  5. Selecione Não Iniciar nenhum cliente

    Captura de ecrã do assistente XLaunch passo 2.

  6. Selecione Sem controlo de acesso

    Captura de ecrã do assistente XLaunch passo 3.

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

    Captura de ecrã do assistente XLaunch passo 4.

Se reiniciar a VM ggXServer , siga os passos 2 a 6 acima para reiniciar a aplicação do Servidor X.

Criar máquinas virtuais da base de dados Oracle

Para este laboratório, vamos criar máquinas ggVM1 virtuais e ggVM2 a partir da imagem oracle Database 19c. Se ainda não existirem na localização da chave predefinida, este comando também cria chaves SSH. Para utilizar um conjunto específico de chaves, utilize a opção --ssh-key-value. Se já tiver criado as chaves SSH na secção Gerar chaves de autenticação , essas chaves serão utilizadas.

Ao criar um novo parâmetro de máquina size virtual indica o tamanho e o tipo de máquina virtual criados. Consoante a região do Azure que selecionou para criar a máquina virtual e as definições de subscrição, alguns tamanhos e tipos de máquinas virtuais poderão não estar disponíveis para utilização. O exemplo seguinte utiliza o tamanho mínimo necessário para este laboratório Standard_DS1_v2. Se quiser alterar as especificações da máquina virtual, selecione um dos tamanhos disponíveis a partir dos Tamanhos da VM do Azure. Para efeitos de teste, pode escolher entre Fins Gerais tipos de máquinas virtuais (Série D). Para implementações de produção ou piloto, a Opção Otimizada para Memória (Série E e Série M) é mais adequada.

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 (replicar)

$ 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

Ligar à ggVM1 (primária)

Ligue-se à ggVM1 com o Bastion.

  1. Navegue para ggVM1 a partir de portal do Azure.
  2. Aceda a Descrição Geral no painel esquerdo.
  3. Selecione Ligar>o Bastion no menu na parte superior
  4. Selecione o separador Bastion
  5. Clique em Utilizar Bastion

Criar a base de dados na ggVM1 (primária)

O software Oracle já está instalado na imagem do Marketplace, pelo que o próximo passo é criar a base de dados.

  1. Execute o software como utilizador oracle .
$ sudo su - oracle
  1. Crie a base de dados com o seguinte comando. Este comando pode demorar entre 30 e 40 minutos a concluir.
$ 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 ter um aspeto 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 o seguinte para adicionar ORACLE_SID e LD_LIBRARY_PATH ao ficheiro .bashrc, para que estas definições sejam guardadas para inícios de sessão futuros. ORACLE_HOME variável já deve ser definida no ficheiro .bashrc.
$ sed -i '$ a export ORACLE_SID=cdb1' .bashrc
$ sed -i '$ a export LD_LIBRARY_PATH=$ORACLE_HOME/lib' .bashrc
  1. Iniciar o serviço de escuta oracle
$ lsnrctl start

Ligar à ggVM2 (replicar)

Ligue-se à ggVM2 com o Bastion.

  1. Navegue para ggVM2 a partir de portal do Azure.
  2. Aceda a Descrição Geral no painel esquerdo.
  3. Selecione Ligar>o Bastion no menu na parte superior
  4. Selecione o separador Bastion
  5. Clique em Utilizar Bastion

Abrir portas de firewall para ggVM1

Configure a firewall para permitir ligações a partir de ggVM1. O seguinte comando é executado em ggVM2.

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

Criar a base de dados no ggVM2 (replicar)

  1. Mudar para o oracle utilizador, se necessário
$ sudo su - oracle
  1. Criar a base 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 o seguinte para adicionar ORACLE_SID e LD_LIBRARY_PATH ao ficheiro .bashrc, para que estas definições sejam guardadas para inícios de sessão futuros. ORACLE_HOME variável já deve ser definida no ficheiro .bashrc.
$ sed -i '$ a export ORACLE_SID=cdb1' .bashrc
$ sed -i '$ a export LD_LIBRARY_PATH=$ORACLE_HOME/lib' .bashrc
  1. Iniciar o serviço de escuta oracle
$ lsnrctl start

Configurar o Golden Gate na ggVM1

Siga os passos nesta secção para instalar e configurar o Golden Gate.

Ativar o modo de registo de arquivo na ggVM1 (primária)

  1. Ligar a sqlplus
$ sqlplus / as sysdba
  1. Ativar o registo de arquivo
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. Ative o registo forçado e certifique-se de que existe, pelo menos, um ficheiro de registo.
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;

Transferir software Golden Gate

  1. Transfira o ficheiro 213000_fbo_ggs_Linux_x64_Oracle_shiphome.zip a partir da página de transferência do Oracle Golden Gate. Sob o título de transferência Oracle GoldenGate 21.3.0.0.0 para Oracle no Linux x86-64.

  2. Depois de transferir o ficheiro .zip para o computador cliente, pode utilizar o Protocolo SCP (Secure Copy Protocol) para copiar os ficheiros para as suas máquinas virtuais (ggVM1 e ggVM2). Certifique-se de que o scp comando aponta para o caminho correto de .zip ficheiro.

  3. Copiar para ggVM1

    1. Inicie sessão e certifique-se de que está a utilizar a subscrição correta conforme descrito em Iniciar sessão no Azure

    2. Abra o túnel para a VM de destino com 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. Deixe a primeira linha de comandos em execução e abra uma segunda linha de comandos para ligar à VM de destino através do túnel. Nesta segunda janela da linha de comandos, pode carregar ficheiros do computador local para a VM de destino com o seguinte comando. O keyfile correto id_rsa para aceder à máquina virtual tem de residir no .ssh diretório ou pode apontar para um ficheiro de chave diferente através -i do parâmetro para o scp comando.

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

    1. Abra o túnel para a VM de destino com 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 a primeira linha de comandos em execução e abra uma segunda linha de comandos para ligar à VM de destino através do túnel. Nesta segunda janela da linha de comandos, pode carregar ficheiros do computador local para a VM de destino com o seguinte comando. O keyfile correto id_rsa para aceder à máquina virtual tem de residir no .ssh diretório ou pode apontar para um ficheiro de chave diferente através -i do parâmetro para o scp comando.

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

Instalar software Golden Gate

  1. Ligue-se à ggVM1 com o Bastion.

    1. Navegue para ggVM1 a partir de portal do Azure.
    2. Aceda a Descrição Geral no painel esquerdo
    3. Selecione Ligar>o Bastion no menu na parte superior
    4. Selecione o separador Bastion
    5. Clique em Utilizar Bastion
  2. Mova o ficheiro .zip para a pasta /opt e, em seguida, altere o proprietário

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

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

    $ chown -R oracle:oinstall /opt/fbo_ggs_Linux_x64_Oracle_shiphome
    $ exit
    
  5. Iniciar instalador do Golden Gate

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

    O instalador é aberto no ggXServer.

  6. Selecione "Oracle GoldenGate para Oracle Database 21c". Em seguida, selecione Seguinte para continuar.

    Captura de ecrã do assistente de instalação do Golden Gate, passo 1.

  7. Defina a localização do software como /u01/app/oracle/product/19.0.0/oggcore_1, certifique-se de que a caixa Gestor de Início está selecionada e selecione Seguinte para continuar.

    Captura de ecrã do assistente de instalação do Golden Gate, passo 2.

  8. No ecrã Resumo , selecione Instalar para continuar.

    Captura de ecrã do assistente de instalação do Golden Gate, passo 3.

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

    Captura de ecrã do assistente de instalação do Golden Gate, passo 4.

  10. Selecione Fechar para continuar.

Captura de ecrã do assistente de instalação do Golden Gate, passo 5.

  1. Ligue-se à ggVM2 com o Bastion.

    1. Navegue para ggVM2 a partir de portal do Azure.
    2. Aceda a Descrição Geral no painel esquerdo
    3. Selecione Ligar>o Bastion no menu na parte superior
    4. Selecione o separador Bastion
    5. Clique em Utilizar Bastion
  2. Repita os passos 2 a 10 acima em ggVM2

Configurar o serviço na ggVM1 (primária)

  1. Crie ou atualize o ficheiro tnsnames.ora.

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

    Quando o editor vi é aberto, tem de premir i para mudar para o modo de inserção e, em seguida, copiar e colar conteúdos de ficheiros e premir Esc a tecla para :wq! guardar o ficheiro.

    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 o proprietário e as contas de utilizador do Golden Gate.

    Nota

    A conta de proprietário tem de ter prefixo 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 a conta de utilizador de teste golden gate

    $ 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 ficheiro de parâmetro de extração.

    Inicie a interface de linha de comandos 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. Prima i a tecla para mudar para o modo de inserção e copiar e colar (clique com o botão direito do rato na janela SSH) seguindo o ficheiro de parâmetro EXTRACT. Prima a tecla :wq! Esc para guardar o ficheiro.

    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. Registar extração- extração integrada.

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

    Neste passo, encontrará o SCN inicial, que é utilizado mais tarde, numa secçã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 é aberto, tem de premir i para mudar para o modo de inserção e, em seguida, copiar e colar conteúdos de ficheiros e premir Esc a tecla para :wq! guardar o ficheiro.

    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
    

Configurar o serviço na ggVM2 (replicar)

  1. Crie ou atualize o ficheiro tnsnames.ora.

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

    Quando o editor vi é aberto, tem de premir i para mudar para o modo de inserção e, em seguida, copiar e colar conteúdos de ficheiros e premir Esc a tecla para :wq! guardar o ficheiro.

    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. Criar 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 utilizador de teste golden gate.

    $ 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. Ficheiro 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 é aberto, tem de premir i para mudar para o modo de inserção e, em seguida, copiar e colar conteúdos de ficheiros e premir Esc a tecla para :wq! guardar o ficheiro.

    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. Configurar um ponto de verificação de replicação.

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

    Quando o editor vi é aberto, tem de premir i para mudar para o modo de inserção e, em seguida, copiar e colar conteúdos de ficheiros e premir Esc a tecla para :wq! guardar o ficheiro.

    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 a replicação (ggVM1 e ggVM2)

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

Iniciar sessão em ggsci.

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

Atualize o ficheiro com o seguinte.

PORT 7809
ACCESSRULE, PROG *, IPADDR *, ALLOW

Reinicie o serviço Gestor.

GGSCI> STOP MGR
GGSCI> START MGR
GGSCI> EXIT

2. Configurar a replicação na ggVM1 (primária)

Inicie a carga inicial e verifique se existem 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 (replicar)

Altere o número scn com o número que obteve antes.

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

A replicação começou e pode testá-la ao inserir novos registos em tabelas TEST.

Ver o estado da tarefa e a resolução de problemas

Ver relatórios

  • Para ver relatórios na ggVM1, execute os seguintes comandos.

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

    GGSCI> VIEW REPORT REPORA
    

Ver estado e histórico

  • Para ver o estado e o histórico na ggVM1, execute os seguintes comandos.

    GGSCI> DBLOGIN USERID C##GGADMIN@CDB1, PASSWORD ggadmin
    GGSCI> INFO EXTRACT EXTORA, DETAIL
    
  • Para ver o estado e o histórico na 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 a Replicação de Dados

  1. Ligar à base de dados primária na ggVM1

    $ sqlplus test/test@pdb1
    
  2. Selecionar registos existentes na tabela

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

    SQL> INSERT INTO TCUSTORD VALUES ('OLLJ',TO_DATE('11-APR-99'),'CYCLE',400,16000,1,102);
    SQL> COMMIT;
    SQL> EXIT;
    
  4. Observar a transação recolhida pelo Golden Gate (Nota Total insere o valor)

$ 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. Ligar à base de dados primária no ggVM2

    $ sqlplus test/test@pdb1
    
  2. Verificar se o novo registo foi 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 configuração do Golden Gate no Oracle linux está agora concluída.

Eliminar a VM ggXServer

A VM ggXServer só é utilizada durante a configuração. Pode eliminá-lo em segurança depois de concluir este documento de laboratório, mas manter a configuração do GoldenGate no laboratório do Azure intacta.

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

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

Eliminar Golden Gate na Configuração do Laboratório do Azure

Quando já não for necessário, o seguinte comando pode ser utilizado para remover o grupo de recursos, a VM e todos os recursos relacionados deste laboratório.

$ az group delete --name GoldenGateOnAzureLab

Passos seguintes

Tutorial sobre a criação de máquinas virtuais altamente disponíveis

Explorar amostras de CLI de implementação de VM