Implementieren von Oracle Golden Gate auf einer Azure-Linux-VM

Gilt für: ✔️ Linux-VMs

Die Azure CLI dient zum Erstellen und Verwalten von Azure-Ressourcen über die Befehlszeile oder mit Skripts. In diesem Leitfaden wird beschrieben, wie Sie die Azure-Befehlszeilenschnittstelle verwenden, um eine Oracle 19c-Datenbank aus dem Azure Marketplace-Katalogimage bereitzustellen.

Dieses Dokument veranschaulicht schrittweise das Erstellen, Installieren und Konfigurieren von Oracle Golden Gate in einer Azure-VM. In diesem Tutorial werden zwei VMs in einer Verfügbarkeitsgruppe in einer einzelnen Region eingerichtet. Das gleiche Tutorial kann verwendet werden, um Oracle GoldenGate für VMs in verschiedenen Verfügbarkeitszonen in einer einzelnen Azure-Region oder für VMs in zwei verschiedenen Regionen einzurichten.

Stellen Sie sicher, dass die Azure CLI installiert ist, bevor Sie beginnen. Weitere Informationen finden Sie im Azure CLI-Installationshandbuch.

Einführung

GoldenGate ist eine logische Replikationssoftware, welche die Echtzeitreplikation, Filterung und Transformation von Daten aus einer Quelldatenbank in eine Zieldatenbank ermöglicht. Dieses Feature stellt sicher, dass Änderungen in der Quelldatenbank in Echtzeit repliziert werden, sodass die Zieldatenbank auf dem neuesten Stand der Daten ist.

GoldenGate sollte hauptsächlich für heterogene Replikationsfälle verwendet werden (also etwa zum Replizieren von Daten aus verschiedenen Quelldatenbanken in einer einzelnen Datenbank). Ein Beispiel wäre ein Data Warehouse. Weitere Verwendungsmöglichkeiten sind plattformübergreifende Migrationen (z. B. von SPARC und AIX zu Linux-x86-Umgebungen) sowie erweiterte Hochverfügbarkeits- und Skalierbarkeitsszenarien.

Darüber hinaus eignet sich GoldenGate auch für Migrationen nahezu ohne Downtime, da es Onlinemigrationen mit minimalen Unterbrechungen für die Quellsysteme unterstützt.

GoldenGate ermöglicht zwar die bidirektionale Replikation, die Anwendung muss jedoch entsprechend konfiguriert sein. Zusätzlich ermöglicht die Software das Filtern und Transformieren von Daten, um bestimmte geschäftliche Anforderungen zu erfüllen, sodass Benutzer die replizierten Daten für verschiedene Zwecke nutzen können.

Vorbereiten der Umgebung

Für die Installation von Oracle Golden Gate müssen Sie zwei Azure-VMs in derselben Verfügbarkeitsgruppe erstellen. Das Marketplace-Image, das Sie zum Erstellen der VMs verwenden, ist Oracle:oracle-database-19-3:oracle-database-19-0904:19.3.1.

Sie müssen zudem mit dem Unix-Editor „vi“ vertraut sein und ein grundlegendes Verständnis von X-Server haben.

Die folgende Tabelle ist eine Zusammenfassung der Umgebungskonfiguration:

Primärer Standort Replikatstandort
Oracle Release Oracle Database 19.3.1.0 Oracle Database 19.3.1.0
Computername ggVM1 ggVM2
Betriebssystem Oracle Linux 7.x Oracle Linux 7.x
Oracle SID CDB1 CDB1
Replikationsschema TEST TEST
Golden Gate-Besitzer/-Replikat C##GGADMIN REPUSER
Golden Gate-Prozess EXTORA REPORA

Anmelden bei Azure

  1. Öffnen Sie Ihre bevorzugte Shell unter Windows, Linux oder Azure Shell.

  2. Melden Sie sich mit dem Befehl az login bei Ihrem Azure-Abonnement an. Befolgen Sie dann die Anweisungen auf dem Bildschirm.

    $ az login
    
  3. Überprüfen Sie den Abonnementnamen und/oder die ID, um sich zu vergewissern, dass Sie mit dem richtigen Abonnement verbunden sind.

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

Generieren von Authentifizierungsschlüsseln

Wir verwenden die auf der Schlüsseldatei basierte Authentifizierung mit SSH, um eine Verbindung mit der Oracle Database-VM herzustellen. Stellen Sie sicher, dass Ihre privaten (mit Namen id_rsa) und öffentlichen (mit Namen id_rsa.pub) Schlüsseldateien in Ihrer Shell erstellt haben.

Der Speicherort der Schlüsseldateien hängt von Ihrem Quellsystem ab.

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

Wenn es nicht vorhanden ist, können Sie ein neues Schlüsseldateipaar erstellen.

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

Das SSH-Verzeichnis und die Schlüsseldateien werden erstellt. Weitere Informationen finden Sie unter Erstellen und Verwalten von SSH-Schlüsseln für die Authentifizierung bei einer Linux-VM in Azure.

Erstellen einer Ressourcengruppe

Verwenden Sie zum Erstellen einer Ressourcengruppe den Befehl az group create. Eine Azure-Ressourcengruppe ist ein logischer Container, in dem Azure-Ressourcen bereitgestellt und verwaltet werden.

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

Erstellen und Konfigurieren eines Netzwerks

Virtuelles Netzwerk erstellen

Verwenden Sie den folgenden Befehl, um das virtuelle Netzwerk zu erstellen, das Ressourcen hostet, die wir in diesem Lab erstellen.

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

Erstellen einer Netzwerksicherheitsgruppe (NSG)

  1. Erstellen Sie eine Netzwerksicherheitsgruppe (NSG), um Ihr virtuelles Netzwerk zu sperren.

    $ az network nsg create \
      --resource-group GoldenGateOnAzureLab \
      --name ggVnetNSG
    
  2. Erstellen Sie eine NSG-Regel, um die Kommunikation innerhalb des virtuellen Netzwerks zuzulassen.

    $ 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. Erstellen Sie eine NSG-Regel zum Verweigern aller eingehenden Verbindungen.

    $ 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. Weisen Sie die NSG dem Subnetz zu, in dem wir unsere Server hosten.

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

Erstellen eines Bastion-Netzwerks

  1. Erstellen Sie ein Bastion-Subnetz. Der Name des Subnetzes muss AzureBastionSubnet lauten.

    $ az network vnet subnet create  \
        --resource-group GoldenGateOnAzureLab \
        --name AzureBastionSubnet \
        --vnet-name ggVnet \
        --address-prefixes 10.0.1.0/24
    
  2. Erstellen Sie eine öffentliche IP-Adresse für Bastion.

    $ az network public-ip create \
        --resource-group GoldenGateOnAzureLab \
        --name ggBastionIP \
        --sku Standard
    
  3. Erstellen Sie eine Azure Bastion-Ressource. Die Bereitstellung der Ressource dauert etwa 10 Minuten.

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

Erstellen einer X Server-VM (ggXServer)

Ersetzen Sie Ihr Kennwort, und führen Sie den folgenden Befehl aus, um eine Windows-Arbeitsstation-VM zu erstellen, auf der Sie X Server bereitstellen.

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

Herstellen einer Verbindung mit ggXServer über Bastion

Stellen Sie mithilfe von Bastion eine Verbindung mit ggXServer her.

  1. Navigieren aus dem Azure-Portal zu ggXServer
  2. Suchen von Übersicht im linken Navigationsbereich
  3. Wählen Sie im Menü ganz oben Verbinden>Bastion aus
  4. Registerkarte „Bastion“ auswählen
  5. Klicken Sie auf Bastion verwenden

Vorbereiten von ggXServer für die Ausführung von X Server

X Server ist für spätere Schritte dieses Labs erforderlich. Führen Sie die folgenden Schritte aus, um X Server zu installieren und zu starten.

  1. Laden Sie Xming X Server für Windows auf ggXServer herunter, und installieren Sie mit allen Standardoptionen.

  2. Achten Sie darauf, dass am Ende der Installation nicht Starten ausgewählt ist.

  3. Starten Sie die „XLAUNCH“-Anwendung über das Startmenü.

  4. Wählen Sie mehrere Fenster aus

    Screenshot des XLaunch-Assistenten Schritt 1.

  5. Wählen Sie Keinen Client starten aus

    Screenshot des XLaunch-Assistenten Schritt 2.

  6. Wählen Sie Keine Zugriffssteuerung aus

    Screenshot des XLaunch-Assistenten Schritt 3.

  7. Wählen Sie Zugriff zulassen aus, um X Server über die Windows-Firewall zuzulassen

    Screenshot des XLaunch-Assistenten Schritt 4.

Wenn Sie Ihre ggXServer-VM neu starten, führen Sie die Schritte 2–6 oben aus, um die X Server-Anwendung neu zu starten.

Erstellen von Oracle-Datenbank-VMs

Für dieses Lab erstellen wir VMs ggVM1 und ggVM2 aus dem Oracle Database 19c-Image. Darüber hinaus erstellt dieser Befehl SSH-Schlüssel, falls diese nicht bereits am Standardschlüsselspeicherort vorhanden sind. Um einen bestimmten Satz von Schlüsseln zu verwenden, nutzen Sie die Option --ssh-key-value. Wenn Sie Ihre SSH-Schlüssel bereits im Abschnitt Authentifizierungsschlüssel generieren erstellt haben, werden diese Schlüssel verwendet.

Beim Erstellen einer neuen VM gibt der size-Parameter die Größe und den Typ der erstellten VM an. Abhängig von der Azure-Region, die Sie zum Erstellen der VM ausgewählt haben, und Ihren Abonnementeinstellungen sind einige VM-Größen und -Typen möglicherweise nicht für Sie verfügbar. Im folgenden Beispiel wird die erforderliche Mindestgröße für dieses Lab (Standard_DS1_v2) verwendet. Wenn Sie die Spezifikationen der VM ändern möchten, wählen Sie eine der verfügbaren Größen unter Azure VM-Größen aus. Zu Testzwecken können Sie aus universellen VM-Typen (D-Serie) auswählen. Für Produktions- oder Pilotbereitstellungen sind arbeitsspeicheroptimierte (E- und M-Serie) VM-Typen besser geeignet.

Erstellen von ggVM1 (primär)

$ 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

Erstellen von ggVM2 (Replikat)

$ 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

Herstellen einer Verbindung mit ggVM1 (primär)

Stellen Sie mithilfe von Bastion eine Verbindung mit ggVM1 her.

  1. Navigieren Sie aus dem Azure-Portal zu ggVM1.
  2. Navigieren Sie im linken Bereich zu Übersicht.
  3. Wählen Sie im Menü ganz oben Verbinden>Bastion aus
  4. Auswählen der Registerkarte „Bastion“
  5. Wählen Sie Bastion verwenden aus.

Erstellen der Datenbank auf ggVM1 (primär)

Die Oracle-Software ist bereits auf dem Marketplace-Image installiert, daher umfasst der nächste Schritt das Erstellen der Datenbank.

  1. Führen Sie die Software als oracle-Benutzer aus.
$ sudo su - oracle
  1. Erstellen Sie die Datenbank mithilfe des folgenden Befehls. Das Ausführen dieses Befehls kann 30–40 Minuten dauern.
$ 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

Die Ausgabe sollte etwa wie folgende Antwort aussehen.

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. Legen Sie die Variablen ORACLE_SID und LD_LIBRARY_PATH fest.
$ export ORACLE_SID=cdb1
$ export LD_LIBRARY_PATH=$ORACLE_HOME/lib
  1. Führen Sie die folgenden Schritte aus, um ORACLE_SID und LD_LIBRARY_PATH zur BASHRC-Datei hinzuzufügen, damit diese Einstellungen für zukünftige Anmeldungen gespeichert werden. Die ORACLE_HOME-Variable sollte bereits in der BASHRC-Datei festgelegt werden.
$ sed -i '$ a export ORACLE_SID=cdb1' .bashrc
$ sed -i '$ a export LD_LIBRARY_PATH=$ORACLE_HOME/lib' .bashrc
  1. Starten des Oracle-Listeners
$ lsnrctl start

Herstellen einer Verbindung mit ggVM2 (Replikat)

Stellen Sie mithilfe von Bastion eine Verbindung mit ggVM2 her.

  1. Navigieren Sie aus dem Azure-Portal zu ggVM2.
  2. Navigieren Sie im linken Bereich zu Übersicht.
  3. Wählen Sie im Menü ganz oben Verbinden>Bastion aus
  4. Auswählen der Registerkarte „Bastion“
  5. Wählen Sie Bastion verwenden aus.

Öffnen von Firewallports für ggVM1

Konfigurieren Sie die Firewall, um Verbindungen von ggVM1 zuzulassen. Der folgende Befehl wird auf „ggVM2“ ausgeführt.

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

Erstellen der Datenbank in ggVM2 (Replikat)

  1. Wechseln zum oracle-Benutzer bei Bedarf
$ sudo su - oracle
  1. Erstellen der Datenbank
$ 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. Legen Sie die Variablen ORACLE_SID und ORACLE_HOME fest.
$ export ORACLE_SID=cdb1
$ export LD_LIBRARY_PATH=$ORACLE_HOME/lib
  1. Führen Sie die folgenden Schritte aus, um ORACLE_SID und LD_LIBRARY_PATH zur BASHRC-Datei hinzuzufügen, damit diese Einstellungen für zukünftige Anmeldungen gespeichert werden. Die ORACLE_HOME-Variable sollte bereits in der BASHRC-Datei festgelegt werden.
$ sed -i '$ a export ORACLE_SID=cdb1' .bashrc
$ sed -i '$ a export LD_LIBRARY_PATH=$ORACLE_HOME/lib' .bashrc
  1. Starten des Oracle-Listeners
$ lsnrctl start

Konfigurieren von GoldenGate auf ggVM1

Führen Sie die Schritte in diesem Abschnitt aus, um GoldenGate zu installieren und zu konfigurieren.

Aktivieren des Archivprotokollmodus in ggVM1 (primär)

  1. Rufen Sie sqlplus auf.
$ sqlplus / as sysdba
  1. Aktivieren des Archivprotokolls
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. Erzwingen Sie die Protokollierung, und stellen Sie sicher, dass mindestens eine Protokolldatei vorhanden ist.
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;

Herunterladen der Golden Gate-Software

  1. Laden Sie die Datei 213000_fbo_ggs_Linux_x64_Oracle_shiphome.zip von der Oracle Golden Gate-Downloadseite unter dem Downloadtitel Oracle GoldenGate 21.3.0.0.0 for Oracle on Linux x86-64 herunter.

  2. Nachdem Sie die ZIP-Datei auf den Clientcomputer heruntergeladen haben, können Sie mit dem Secure Copy Protocol (SCP) die Dateien auf Ihre VMs (ggVM1 und ggVM2) kopieren. Stellen Sie sicher, dass der scp-Befehl auf den richtigen Pfad der ZIP-Datei zeigt.

  3. Kopieren nach ggVM1

    1. Melden Sie sich an, und vergewissern Sie sich, wie unter Anmelden bei Azure beschrieben, dass Sie das richtige Abonnement verwenden.

    2. Öffnen Sie den Tunnel zu Ihrer Ziel-VM mithilfe des folgenden PowerShell-Befehls

      $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. Lassen Sie die erste Eingabeaufforderung ausgeführt, und öffnen Sie eine zweite Eingabeaufforderung, um über den Tunnel eine Verbindung mit Ihrer Ziel-VM herzustellen. In diesem zweiten Eingabeaufforderungsfenster können Sie Dateien von Ihrem lokalen Computer mit dem folgenden Befehl auf Ihre Ziel-VM hochladen. Die richtige id_rsa-Schlüsseldatei für den Zugriff auf die VM muss sich im .ssh-Verzeichnis befinden, oder Sie können mithilfe des -i-Parameters zum scp-Befehl auf eine andere Schlüsseldatei verweisen.

       scp -P 57500 "213000_fbo_ggs_Linux_x64_Oracle_shiphome.zip"  azureuser@127.0.0.1:.
      
  4. Kopieren nach ggVM2

    1. Öffnen Sie den Tunnel zu Ihrer Ziel-VM mithilfe des folgenden PowerShell-Befehls

      $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. Lassen Sie die erste Eingabeaufforderung laufen, und öffnen Sie eine zweite Eingabeaufforderung, um über den Tunnel eine Verbindung mit Ihrer Ziel-VM herzustellen. In diesem zweiten Eingabeaufforderungsfenster können Sie Dateien von Ihrem lokalen Computer mit dem folgenden Befehl auf Ihre Ziel-VM hochladen. Die richtige id_rsa-Schlüsseldatei für den Zugriff auf die VM muss sich im .ssh-Verzeichnis befinden, oder Sie können mithilfe des -i-Parameters zum scp-Befehl auf eine andere Schlüsseldatei verweisen.

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

Installieren der Golden Gate-Software

  1. Stellen Sie mithilfe von Bastion eine Verbindung mit ggVM1 her.

    1. Navigieren Sie aus dem Azure-Portal zu ggVM1.
    2. Navigieren Sie im linken Bereich zu Übersicht.
    3. Wählen Sie im Menü ganz oben Verbinden>Bastion aus
    4. Auswählen der Registerkarte „Bastion“
    5. Wählen Sie Bastion verwenden aus.
  2. Verschieben Sie die ZIP-Datei in den Ordner /opt , und ändern Sie dann den Besitzer

    $ sudo su -
    $ mv /home/azureuser/*.zip /opt
    
  3. Entpacken Sie die Dateien. Installieren Sie ein Hilfsprogramm dafür, sofern noch keines installiert ist.

    $ yum install unzip
    $ cd /opt
    $ unzip 213000_fbo_ggs_Linux_x64_Oracle_shiphome.zip
    
  4. Ändern der Berechtigung

    $ chown -R oracle:oinstall /opt/fbo_ggs_Linux_x64_Oracle_shiphome
    $ exit
    
  5. Starten des GoldenGate-Installationsprogramms

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

    Das Installationsprogramm wird auf ggXServer geöffnet.

  6. Wählen Sie „Oracle GoldenGate for Oracle Database 21c“ aus. Klicken Sie dann auf Weiter, um fortzufahren.

    Screenshot des GoldenGate-Installationsassistenten Schritt 1.

  7. Legen Sie den Softwarespeicherort auf /u01/app/oracle/product/19.0.0/oggcore_1 fest, stellen Sie sicher, dass das Feld Start Manager ausgewählt ist, und wählen Sie Weiter aus, um fortzufahren.

    Screenshot des GoldenGate-Installationsassistenten Schritt 2.

  8. Wählen Sie auf der Summary (Zusammenfassung) Install (Installieren) aus, um den Vorgang fortzusetzen.

    Screenshot des GoldenGate-Installationsassistenten Schritt 3.

  9. Warten Sie, bis die Installation abgeschlossen ist.

    Screenshot des GoldenGate-Installationsassistenten Schritt 4.

  10. Wählen Sie Schließen aus, um fortzufahren.

Screenshot des GoldenGate-Installationsassistenten Schritt 5.

  1. Stellen Sie mithilfe von Bastion eine Verbindung mit ggVM2 her.

    1. Navigieren Sie aus dem Azure-Portal zu ggVM2.
    2. Navigieren Sie im linken Bereich zu Übersicht.
    3. Wählen Sie im Menü ganz oben Verbinden>Bastion aus
    4. Auswählen der Registerkarte „Bastion“
    5. Wählen Sie Bastion verwenden aus.
  2. Wiederholen Sie die Schritte 2–10 oben auf ggVM2

Einrichten des Diensts auf ggVM1 (primär)

  1. Erstellen oder aktualisieren Sie die Datei „tnsnames.ora“.

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

    Wenn der VI-Editor geöffnet wird, müssen Sie i drücken, um in den Einfügemodus zu wechseln, dann Dateiinhalte kopieren und einfügen und die Esc-Taste drücken, :wq!, um die Datei zu speichern.

    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. Erstellen Sie den Golden Gate-Besitzer und Benutzerkonten.

    Hinweis

    Das Konto des Besitzers muss das Präfix „C##“ haben.

    $ 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. Erstellen des GoldenGate-Testbenutzerkontos

    $ 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. Konfigurieren Sie die EXTRACT-Parameterdatei.

    Starten Sie die Golden Gate-Befehlszeilen-Schnittstelle (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. Drücken Sie die i-Taste, um in den Einfügemodus zu wechseln, um mit Kopieren und Einfügen (rechtsklick auf das SSH-Fenster) folgendes die EXTRACT-Parameterdatei einzufügen. Drücken Sie die ESC-TASTE, :wq!, um die Datei zu speichern.

    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. Registrieren Sie „extract--integrated extract“.

    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. Einrichten von Extrahieren-Prüfpunkten und starten der Echtzeit-Extrahierung

    $ ./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 diesem Schritt finden Sie den Start-SCN, der später in einem anderen Abschnitt verwendet wird.

    $ 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
    

    Wenn der VI-Editor geöffnet wird, müssen Sie i drücken, um in den Einfügemodus zu wechseln, dann Dateiinhalte kopieren und einfügen und die Esc-Taste drücken, :wq!, um die Datei zu speichern.

    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
    

Einrichten des Diensts auf ggVM2 (Replikat)

  1. Erstellen oder aktualisieren Sie die Datei „tnsnames.ora“.

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

    Wenn der VI-Editor geöffnet wird, müssen Sie i drücken, um in den Einfügemodus zu wechseln, dann Dateiinhalte kopieren und einfügen und die Esc-Taste drücken, :wq!, um die Datei zu speichern.

    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. Erstellen Sie ein Replikatkonto.

    $ 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. Erstellen Sie ein GoldenGate-Testbenutzerkonto.

    $ 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. REPLICAT-Parameterdatei zum Replizieren von Änderungen.

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

    Wenn der VI-Editor geöffnet wird, müssen Sie i drücken, um in den Einfügemodus zu wechseln, dann Dateiinhalte kopieren und einfügen und die Esc-Taste drücken, :wq!, um die Datei zu speichern.

    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. Richten Sie einen Replikatprüfpunkt ein.

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

    Wenn der VI-Editor geöffnet wird, müssen Sie i drücken, um in den Einfügemodus zu wechseln, dann Dateiinhalte kopieren und einfügen und die Esc-Taste drücken, :wq!, um die Datei zu speichern.

    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
    

Einrichten der Replikation (ggVM1 und ggVM2)

1. Einrichten der Replikation auf ggVM2 (Replikat)

Melden Sie sich bei ggsci an.

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

Aktualisieren Sie die Datei mit dem folgenden Inhalt.

PORT 7809
ACCESSRULE, PROG *, IPADDR *, ALLOW

Starten Sie dann den Manager-Dienst neu.

GGSCI> STOP MGR
GGSCI> START MGR
GGSCI> EXIT

2. Einrichten der Replikation auf ggVM1 (primär)

Starten Sie die Anfangslast, und überprüfen Sie auf Fehler.

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

3. Einrichten der Replikation auf ggVM2 (Replikat)

Ändern Sie die SCN-Nummer durch den Wert, den Sie zuvor erhalten haben.

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

Die Replikation wurde gestartet, und Sie können sie testen, indem Sie in die TEST-Tabellen neue Datensätze einfügen.

Anzeigen des Auftragsstatus und Problembehandlung

Berichte anzeigen

  • Um Berichte für ggVM1 anzuzeigen, führen Sie die folgenden Befehle aus.

    GGSCI> VIEW REPORT EXTORA
    
  • Um Berichte für ggVM2 anzuzeigen, führen Sie die folgenden Befehle aus.

    GGSCI> VIEW REPORT REPORA
    

Anzeigen des Status und Verlaufs

  • Um den Status und Verlauf für ggVM1 anzuzeigen, führen Sie die folgenden Befehle aus.

    GGSCI> DBLOGIN USERID C##GGADMIN@CDB1, PASSWORD ggadmin
    GGSCI> INFO EXTRACT EXTORA, DETAIL
    
  • Um den Status und Verlauf für ggVM2 anzuzeigen, führen Sie die folgenden Befehle aus.

    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;
    

Beobachten der Datenreplikation

  1. Herstellen einer Verbindung mit der primären Datenbank auf ggVM1

    $ sqlplus test/test@pdb1
    
  2. Auswählen der vorhandenen Datensätze aus der Tabelle

    SQL> select * from TCUSTORD;
    
  3. Erstellen eines Testeintrags

    SQL> INSERT INTO TCUSTORD VALUES ('OLLJ',TO_DATE('11-APR-99'),'CYCLE',400,16000,1,102);
    SQL> COMMIT;
    SQL> EXIT;
    
  4. Beobachten der von GoldenGate aufgenommenen Transaktion (Notieren Sie den Wert Einfügungen insgesamt)

$ 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. Herstellen einer Verbindung mit der primären Datenbank auf ggVM2

    $ sqlplus test/test@pdb1
    
  2. Überprüfen, ob ein neuer Datensatz repliziert wird

    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
    

Die Installation und Konfiguration von GoldenGate unter Oracle Linux ist jetzt abgeschlossen.

Löschen der ggXServer-VM

Die ggXServer-VM wird nur während des Setups verwendet. Sie können sie sicher löschen, nachdem Sie dieses Lab-Dokument abgeschlossen haben, aber halten Sie Ihr Setup für GoldenGate in Azure Lab intakt.

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

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

Löschen des Setup für GoldenGate in Azure Lab

Wenn die Ressourcengruppe, die VM und alle zugehörigen Ressourcen für dieses Lab nicht mehr benötigt werden, können Sie diese mit dem folgenden Befehl entfernen.

$ az group delete --name GoldenGateOnAzureLab

Nächste Schritte

Erstellen einer vollständigen Linux-Umgebung mit der Azure CLI 2.0

Azure CLI-Beispiele für Linux-VMs