Condividi tramite


Implementare Oracle Golden Gate in una macchina virtuale Linux di Azure

Si applica a: ✔️ macchine virtuali Linux

L'interfaccia della riga di comando di Azure viene usata per creare e gestire le risorse di Azure dalla riga di comando o negli script. Questa guida illustra in dettaglio come usare l'interfaccia della riga di comando di Azure per distribuire un database Oracle 19c dall'immagine della raccolta di Azure Marketplace.

Questo documento descrive dettagliatamente come creare, installare e configurare Oracle Golden Gate in una VM Azure. In questa esercitazione vengono configurate due macchine virtuali in un set di disponibilità in una singola area. La stessa esercitazione può essere usata per configurare OracleGolden Gate per le macchine virtuali in zone di disponibilità diverse in una singola area di Azure o per le macchine virtuali configurate in due aree diverse.

Prima di iniziare, assicurarsi che l'interfaccia della riga di comando di Azure sia installata. Per altre informazioni, vedere Azure CLI installation guide (Guida all'installazione dell'interfaccia della riga di comando di Azure).

Introduzione

GoldenGate è un software di replica logica che consente la replica in tempo reale, il filtro e la trasformazione dei dati da un database di origine a un database di destinazione. Questa funzionalità garantisce che le modifiche nel database di origine vengano replicate in tempo reale, rendendo possibile che il database di destinazione sia aggiornato con i dati più recenti.

Usare GoldenGate principalmente per casi di replica eterogenei, ad esempio la replica di dati da database di origine diversi in un singolo database. Ad esempio, un data warehouse. È anche possibile usarlo per le migrazioni multipiattaforma, ad esempio da SPARC e AIX agli ambienti Linux x86 e scenari avanzati di disponibilità e scalabilità.

Inoltre, GoldenGate è adatto anche per le migrazioni con tempi di inattività quasi zero poiché supporta le migrazioni online con interruzioni minime nei sistemi di origine.

Anche se GoldenGate facilita la replica bidirezionale, l'applicazione deve essere configurata di conseguenza. Inoltre, il software consente di filtrare e trasformare i dati per soddisfare requisiti aziendali specifici, consentendo agli utenti di usare i dati replicati per vari scopi.

Preparare l'ambiente

Per installare Oracle Golden Gate è necessario creare due VM Azure nello stesso set di disponibilità. L'immagine del Marketplace usata per creare le macchine virtuali è Oracle:oracle-database-19-3:oracle-database-19-0904:19.3.1.

È anche necessario avere familiarità con l'editor Unix vi e avere una conoscenza di base di X Server.

La tabella seguente contiene un riepilogo della configurazione dell'ambiente:

Sito primario Sito di replica
Versione di Oracle Oracle Database 19.3.1.0 Oracle Database 19.3.1.0
Nome computer ggVM1 ggVM2
Sistema operativo Oracle Linux 7.x Oracle Linux 7.x
SID Oracle CDB1 CDB1
Schema di replica TEST TEST
Proprietario/replica Golden Gate C##GGADMIN REPUSER
Processo Golden Gate EXTORA REPORA

Accedere ad Azure

  1. Aprire la shell preferita in Windows, Linux o Azure Shell.

  2. Accedere alla sottoscrizione di Azure con il comando az login. Seguire quindi le istruzioni visualizzate sullo schermo.

    $ az login
    
  3. Assicurarsi di essere connessi alla sottoscrizione corretta verificando il nome e/o l'ID della sottoscrizione.

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

Generare chiavi di autenticazione

Viene usata l'autenticazione basata su file di chiave con ssh per connettersi alla macchina virtuale di Database Oracle. Assicurarsi di avere i file di chiave privati (denominati id_rsa) e pubblici (denominati id_rsa.pub) vengono creati nella shell.

Il percorso dei file chiave dipende dal sistema di origine.

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

Se non esistono, è possibile creare una nuova coppia di file di chiavi.

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

Vengono creati i file di directory e chiave .ssh. Per altre informazioni, vedere Creare e gestire chiavi SSH per l'autenticazione in una macchina virtuale Linux in Azure

Creare un gruppo di risorse

Per creare un gruppo di risorse, usare il comando az group create. Un gruppo di risorse di Azure è un contenitore logico in cui le risorse di Azure vengono distribuite e gestite.

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

Creare e configurare la rete

Creare una rete virtuale

Usare il comando seguente per creare la rete virtuale che ospita le risorse create in questo lab.

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

Creare un gruppo di sicurezza di rete

  1. Creare un gruppo di sicurezza di rete per bloccare la rete virtuale.

    $ az network nsg create \
      --resource-group GoldenGateOnAzureLab \
      --name ggVnetNSG
    
  2. Creare una regola del gruppo di sicurezza di rete per consentire la comunicazione all'interno della rete virtuale.

    $ 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. Creare una regola del gruppo di sicurezza di rete per negare tutte le connessioni in ingresso.

    $ 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. Assegnare un gruppo di sicurezza di rete alla subnet in cui sono ospitati i server.

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

Creare una rete Bastion

  1. Creare una subnet Bastion. Il nome della subnet deve essere AzureBastionSubnet.

    $ az network vnet subnet create  \
        --resource-group GoldenGateOnAzureLab \
        --name AzureBastionSubnet \
        --vnet-name ggVnet \
        --address-prefixes 10.0.1.0/24
    
  2. Creare un indirizzo IP pubblico per Bastion.

    $ az network public-ip create \
        --resource-group GoldenGateOnAzureLab \
        --name ggBastionIP \
        --sku Standard
    
  3. Creare una risorsa Azure Bastion. La distribuzione della risorsa richiede circa 10 minuti.

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

Creare una macchina virtuale X Server (ggXServer)

Sostituire la password ed eseguire il comando seguente per creare una macchina virtuale della workstation Windows in cui viene distribuito 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>

Connettersi a ggXServer tramite Bastion

Connettersi a ggXServer usando Bastion.

  1. Passare a ggXServer da portale di Azure
  2. Individuare la panoramica nel riquadro di spostamento a sinistra
  3. Selezionare Connetti>Bastion nel menu nella parte superiore
  4. Selezionare la scheda Bastion
  5. Fare clic su Usa Bastion

Preparare ggXServer per eseguire X Server

X Server è necessario per i passaggi successivi di questo lab. Seguire questa procedura per installare e avviare X Server.

  1. Scaricare Xming X Server per Windows in ggXServer e installarlo con tutte le opzioni predefinite.

  2. Assicurarsi di non aver selezionato Avvia alla fine dell'installazione

  3. Avviare l'applicazione "XLAUNCH" dal menu Start.

  4. Selezionare Più finestre

    Screenshot della procedura guidata XLaunch passaggio 1.

  5. Selezionare Avvia nessun client

    Screenshot del passaggio 2 della procedura guidata XLaunch.

  6. Selezionare Nessun controllo di accesso

    Screenshot della procedura guidata XLaunch passaggio 3.

  7. Selezionare Consenti l'accesso per consentire X Server tramite Windows Firewall

    Screenshot della procedura guidata XLaunch passaggio 4.

Se si riavvia la macchina virtuale ggXServer , seguire i passaggi da 2 a 6 precedenti per riavviare l'applicazione X Server.

Creare macchine virtuali di database Oracle

Per questo lab vengono create macchine ggVM1 virtuali e ggVM2 dall'immagine Oracle Database 19c. Se non esistono già nel percorso predefinito della chiave, questo comando crea anche chiavi SSH. Per usare un set specifico di chiavi, utilizzare l'opzione --ssh-key-value. Se le chiavi SSH sono già state create nella sezione Genera chiavi di autenticazione, tali chiavi vengono usate.

Quando si crea una nuova macchina virtuale, il size parametro indica le dimensioni e il tipo di macchina virtuale creati. A seconda dell'area di Azure selezionata per creare la macchina virtuale e le impostazioni della sottoscrizione, alcune dimensioni e tipi di macchine virtuali potrebbero non essere disponibili per l'uso. Nell'esempio seguente vengono usate le dimensioni minime necessarie per questo lab Standard_DS1_v2. Per modificare le specifiche della macchina virtuale, selezionare una delle dimensioni disponibili in Dimensioni delle macchine virtuali di Azure. A scopo di test, è possibile scegliere tra tipi di macchine virtuali per utilizzo generico (serie D). Per le distribuzioni di produzione o pilota, le serie E (serie E e serie M) sono più adatte.

Creare ggVM1 (primaria)

$ 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

Creare ggVM2 (replica)

$ 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

Connettersi a ggVM1 (primario)

Connettersi a ggVM1 usando Bastion.

  1. Passare a ggVM1 da portale di Azure.
  2. Passare a Panoramica nel riquadro sinistro.
  3. Selezionare Connetti>Bastion nel menu nella parte superiore
  4. Selezionare la scheda Bastion
  5. Selezionare Usa Bastion

Creare il database in ggVM1 (primario)

Il software Oracle è già installato nell'immagine del Marketplace, quindi il passaggio successivo consiste nel creare il database.

  1. Eseguire il software come oracle utente.
$ sudo su - oracle
  1. Creare il database usando il comando seguente. Il completamento di questo comando può richiedere 30-40 minuti.
$ 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

L'output dovrebbe essere simile alla risposta seguente.

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. Impostare le variabili ORACLE_SID e LD_LIBRARY_PATH.
$ export ORACLE_SID=cdb1
$ export LD_LIBRARY_PATH=$ORACLE_HOME/lib
  1. Eseguire il comando seguente per aggiungere ORACLE_SID e LD_LIBRARY_PATH al file con estensione bashrc, in modo che queste impostazioni vengano salvate per gli accessi futuri. ORACLE_HOME variabile deve essere già impostata nel file con estensione bashrc.
$ sed -i '$ a export ORACLE_SID=cdb1' .bashrc
$ sed -i '$ a export LD_LIBRARY_PATH=$ORACLE_HOME/lib' .bashrc
  1. Avviare il listener Oracle
$ lsnrctl start

Connettersi a ggVM2 (replicare)

Connettersi a ggVM2 usando Bastion.

  1. Passare a ggVM2 da portale di Azure.
  2. Passare a Panoramica nel riquadro sinistro.
  3. Selezionare Connetti>Bastion nel menu nella parte superiore
  4. Selezionare la scheda Bastion
  5. Selezionare Usa Bastion

Aprire le porte del firewall per ggVM1

Configurare il firewall per consentire le connessioni da ggVM1. Il comando seguente viene eseguito in ggVM2.

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

Creare il database in ggVM2 (replica)

  1. Passare all'utente oracle , se necessario
$ sudo su - oracle
  1. Creare il database
$ 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. Impostare le variabili ORACLE_SID e ORACLE_HOME.
$ export ORACLE_SID=cdb1
$ export LD_LIBRARY_PATH=$ORACLE_HOME/lib
  1. Eseguire il comando seguente per aggiungere ORACLE_SID e LD_LIBRARY_PATH al file con estensione bashrc, in modo che queste impostazioni vengano salvate per gli accessi futuri. ORACLE_HOME variabile deve essere già impostata nel file con estensione bashrc.
$ sed -i '$ a export ORACLE_SID=cdb1' .bashrc
$ sed -i '$ a export LD_LIBRARY_PATH=$ORACLE_HOME/lib' .bashrc
  1. Avviare il listener Oracle
$ lsnrctl start

Configurare Golden Gate in ggVM1

Seguire i passaggi descritti in questa sezione per installare e configurare Golden Gate.

Abilitare la modalità di log di archiviazione in ggVM1 (primaria)

  1. Connetti a sqlplus
$ sqlplus / as sysdba
  1. Abilitare il log di archiviazione
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. Abilitare la registrazione forzata e verificare che sia presente almeno un file di registro.
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;

Scaricare il software Golden Gate

  1. Scaricare il file 213000_fbo_ggs_Linux_x64_Oracle_shiphome.zip dalla pagina di download di Oracle Golden Gate, sotto il titolo di download Oracle GoldenGate 21.3.0.0.0 per Oracle in Linux x86-64.

  2. Dopo aver scaricato il file .zip nel computer client, è possibile usare Secure Copy Protocol (SCP) per copiare i file nelle macchine virtuali (ggVM1 e ggVM2). Assicurarsi che il scp comando punti al percorso corretto del file di .zip.

  3. Copia in ggVM1

    1. Accedere e assicurarsi di usare la sottoscrizione corretta in base alle esigenze, come descritto in Accedere ad Azure

    2. Aprire il tunnel per la macchina virtuale di destinazione usando il comando di PowerShell seguente

      $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. Per connettersi alla macchina virtuale di destinazione tramite il tunnel, lasciare il primo prompt dei comandi in esecuzione e aprire un secondo prompt dei comandi . In questa seconda finestra del prompt dei comandi è possibile caricare i file dal computer locale alla macchina virtuale di destinazione usando il comando seguente. Il file di chiave corretto id_rsa per accedere alla macchina virtuale deve trovarsi nella .ssh directory oppure è possibile puntare a un file di chiave diverso usando -i il parametro per il scp comando.

       scp -P 57500 "213000_fbo_ggs_Linux_x64_Oracle_shiphome.zip"  azureuser@127.0.0.1:.
      
  4. Copia in ggVM2

    1. Aprire il tunnel per la macchina virtuale di destinazione usando il comando di PowerShell seguente

      $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. Lasciare il primo prompt dei comandi in esecuzione e aprire un secondo prompt dei comandi per connettersi alla macchina virtuale di destinazione tramite il tunnel. In questa seconda finestra del prompt dei comandi è possibile caricare i file dal computer locale alla macchina virtuale di destinazione usando il comando seguente. Il file di chiave corretto id_rsa per accedere alla macchina virtuale deve trovarsi nella .ssh directory oppure è possibile puntare a un file di chiave diverso usando -i il parametro per il scp comando.

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

Installare il software Golden Gate

  1. Connettersi a ggVM1 usando Bastion.

    1. Passare a ggVM1 da portale di Azure.
    2. Passare a Panoramica nel pannello sinistro
    3. Selezionare Connetti>Bastion nel menu nella parte superiore
    4. Selezionare la scheda Bastion
    5. Selezionare Usa Bastion
  2. Spostare il file .zip nella cartella /opt , quindi modificare il proprietario

    $ sudo su -
    $ mv /home/azureuser/*.zip /opt
    
  3. Decomprimere i file (installare unzip utility se non è già installato)

    $ yum install unzip
    $ cd /opt
    $ unzip 213000_fbo_ggs_Linux_x64_Oracle_shiphome.zip
    
  4. Modificare l'autorizzazione

    $ chown -R oracle:oinstall /opt/fbo_ggs_Linux_x64_Oracle_shiphome
    $ exit
    
  5. Avviare il programma di installazione di Golden Gate

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

    Il programma di installazione viene aperto in ggXServer.

  6. Selezionare 'Oracle GoldenGate for Oracle Database 21c'. Selezionare Avanti per continuare.

    Screenshot dell'installazione guidata di Golden Gate passaggio 1.

  7. Impostare il percorso software su /u01/app/oracle/product/19.0.0/oggcore_1, assicurarsi che la casella Start Manager sia selezionata e selezionare Avanti per continuare.

    Screenshot dell'installazione guidata di Golden Gate, passaggio 2.

  8. Nella schermata Summary (Riepilogo) selezionare Install (Installa) per continuare.

    Screenshot dell'installazione guidata di Golden Gate, passaggio 3.

  9. Attendere il completamento dell'installazione.

    Screenshot dell'installazione guidata di Golden Gate, passaggio 4.

  10. Selezionare Chiudi per continuare.

Screenshot dell'installazione guidata di Golden Gate passaggio 5.

  1. Connettersi a ggVM2 usando Bastion.

    1. Passare a ggVM2 da portale di Azure.
    2. Passare a Panoramica nel riquadro sinistro
    3. Selezionare Connetti>Bastion nel menu nella parte superiore
    4. Selezionare la scheda Bastion
    5. Selezionare Usa Bastion
  2. Ripetere i passaggi da 2 a 10 sopra in ggVM2

Configurare il servizio in ggVM1 (primario)

  1. Creare o aggiornare il file tnsnames.ora.

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

    Quando si apre l'editor vi è necessario premere i per passare alla modalità di inserimento, quindi copiare e incollare il contenuto del file e premere il Esc tasto :wq! per salvare il file.

    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. Creare gli account proprietario e utente di Golden Gate.

    Nota

    L'account proprietario deve avere il prefisso 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. Creare l'account utente di test di 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. Configurare il file dei parametri EXTRACT.

    Avviare l'interfaccia della riga di comando di 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. Premere i il tasto per passare alla modalità di inserimento e copiare e incollare (fare clic con il pulsante destro del mouse sulla finestra SSH) seguendo il file di parametri EXTRACT. Premere ESC :wq! per salvare il file.

    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. Registrare l'estratto integrato nell'estrazione.

    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. Configurare i checkpoint di estrazione e avviare l'estrazione in tempo reale

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

    In questo passaggio si trova la scN iniziale, che verrà usata in un secondo momento, in una sezione diversa.

    $ 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 si apre l'editor vi è necessario premere i per passare alla modalità di inserimento, quindi copiare e incollare il contenuto del file e premere il Esc tasto :wq! per salvare il file.

    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
    

Configurare il servizio in ggVM2 (replica)

  1. Creare o aggiornare il file tnsnames.ora.

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

    Quando si apre l'editor vi è necessario premere i per passare alla modalità di inserimento, quindi copiare e incollare il contenuto del file e premere il Esc tasto :wq! per salvare il file.

    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. Creare un account di replica.

    $ 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. Creare un account utente di test di 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. File di parametri REPLICAT per replicare le modifiche.

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

    Quando si apre l'editor vi è necessario premere i per passare alla modalità di inserimento, quindi copiare e incollare il contenuto del file e premere il Esc tasto :wq! per salvare il file.

    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. Configurare un checkpoint di replica.

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

    Quando si apre l'editor vi è necessario premere i per passare alla modalità di inserimento, quindi copiare e incollare il contenuto del file e premere il Esc tasto :wq! per salvare il file.

    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
    

Configurare la replica (ggVM1 e ggVM2)

1. Configurare la replica in ggVM2 (replica)

Accedere a ggsci.

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

Aggiornare il file con quanto segue.

PORT 7809
ACCESSRULE, PROG *, IPADDR *, ALLOW

Riavviare il servizio Manager.

GGSCI> STOP MGR
GGSCI> START MGR
GGSCI> EXIT

2. Configurare la replica in ggVM1 (primario)

Avviare il caricamento iniziale e verificare la presenza di errori.

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

3. Configurare la replica in ggVM2 (replica)

Modificare il numero SCN con il numero ottenuto in precedenza.

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

La replica è stata avviata ed è possibile testarla inserendo nuovi record nelle tabelle TEST.

Visualizzare lo stato del processo e le informazioni di risoluzione dei problemi

Visualizzazione di report

  • Per visualizzare i report in ggVM1, eseguire i comandi seguenti.

    GGSCI> VIEW REPORT EXTORA
    
  • Per visualizzare i report in ggVM2, eseguire i comandi seguenti.

    GGSCI> VIEW REPORT REPORA
    

Visualizzare stato e cronologia

  • Per visualizzare lo stato e la cronologia in ggVM1, eseguire i comandi seguenti.

    GGSCI> DBLOGIN USERID C##GGADMIN@CDB1, PASSWORD ggadmin
    GGSCI> INFO EXTRACT EXTORA, DETAIL
    
  • Per visualizzare lo stato e la cronologia in ggVM2, eseguire i comandi seguenti.

    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;
    

Osservare la replica dei dati

  1. Connettersi al database primario in ggVM1

    $ sqlplus test/test@pdb1
    
  2. Selezionare i record esistenti dalla tabella

    SQL> select * from TCUSTORD;
    
  3. Creare un record di test

    SQL> INSERT INTO TCUSTORD VALUES ('OLLJ',TO_DATE('11-APR-99'),'CYCLE',400,16000,1,102);
    SQL> COMMIT;
    SQL> EXIT;
    
  4. Osservare la transazione prelevata da Golden Gate (nota Valore totale inserimenti )

$ 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. Connettersi al database primario in ggVM2

    $ sqlplus test/test@pdb1
    
  2. Verificare che il nuovo record sia replicato

    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
    

L'installazione e la configurazione di Golden Gate in Oracle linux sono ora completate.

Eliminare la macchina virtuale ggXServer

La macchina virtuale ggXServer viene usata solo durante l'installazione. È possibile eliminarlo in modo sicuro dopo aver completato questo documento del lab, ma mantenere intatto il programma di installazione del lab di GoldenGate in Azure.

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

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

Eliminare l'installazione di Golden Gate in Azure Lab

Quando non è più necessario, è possibile usare il comando seguente per rimuovere il gruppo di risorse, la macchina virtuale e tutte le risorse correlate per questo lab.

$ az group delete --name GoldenGateOnAzureLab

Passaggi successivi

Creare esercitazioni per macchine virtuali a disponibilità elevata

Esplorare gli esempi dell'interfaccia della riga di comando per la distribuzione della VM