Oracle Data Guard implementeren op een virtuele Linux-machine van Azure

Van toepassing op: ✔️ Linux-VM's

Azure CLI wordt gebruikt voor het maken en beheren van Azure-resources vanaf de opdrachtregel of in scripts. In dit artikel wordt beschreven hoe u Azure CLI gebruikt om een Oracle Database 12c-database te implementeren vanuit de Azure Marketplace-afbeelding. In dit artikel wordt stapsgewijs beschreven hoe u Data Guard installeert en configureert op een virtuele Machine (VM) van Azure.

Voordat u begint, moet u ervoor zorgen dat Azure CLI is geïnstalleerd. Zie de Azure CLI-installatiehandleiding voor meer informatie.

De omgeving voorbereiden

Aannames

Als u Oracle Data Guard wilt installeren, moet u twee Azure-VM's maken in dezelfde beschikbaarheidsset:

  • De primaire VM (myVM1) heeft een actief Oracle-exemplaar.
  • Op de stand-by-VM (myVM2) is alleen de Oracle-software geïnstalleerd.

De Marketplace-afbeelding die u gebruikt om de VM's te maken, is Oracle:Oracle-Database-Ee:12.1.0.2:latest.

Aanmelden bij Azure

Meld u aan bij uw Azure-abonnement met behulp van de opdracht az login en volg de instructies op het scherm.

az login

Een resourcegroep maken

Maak een resourcegroep met de opdracht az group create. Een Azure-resourcegroep is een logische container waarin Azure-resources worden geïmplementeerd en beheerd.

In het volgende voorbeeld wordt een resourcegroep met de naam myResourceGroup gemaakt op de locatie westus:

az group create --name myResourceGroup --location westus

Een beschikbaarheidsset maken

Het maken van een beschikbaarheidsset is optioneel, maar we raden dit aan. Zie Richtlijnen voor Azure-beschikbaarheidssets voor meer informatie.

az vm availability-set create \
    --resource-group myResourceGroup \
    --name myAvailabilitySet \
    --platform-fault-domain-count 2 \
    --platform-update-domain-count 2

Een virtuele machine maken

Maak een VM met de opdracht az vm create.

In het volgende voorbeeld worden twee VM's gemaakt met de myVM1 naam en myVM2 . Er worden ook SSH-sleutels gemaakt, indien deze niet al op een standaardsleutellocatie aanwezig zijn. Als u een specifieke set sleutels wilt gebruiken, gebruikt u de optie --ssh-key-value.

MyVM1 (primair) maken:

az vm create \
     --resource-group myResourceGroup \
     --name myVM1 \
     --availability-set myAvailabilitySet \
     --image Oracle:Oracle-Database-Ee:12.1.0.2:latest \
     --size Standard_DS1_v2  \
     --admin-username azureuser \
     --generate-ssh-keys \

Nadat u de VM hebt maken, toont Azure CLI soortgelijke informatie als in het volgende voorbeeld. Noteer de waarde van publicIpAddress . Dit adres wordt gebruikt voor toegang tot de virtuele machine.

{
  "fqdns": "",
  "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachines/myVM",
  "location": "westus",
  "macAddress": "00-0D-3A-36-2F-56",
  "powerState": "VM running",
  "privateIpAddress": "10.0.0.4",
  "publicIpAddress": "13.64.104.241",
  "resourceGroup": "myResourceGroup"
}

MyVM2 maken (stand-by):

az vm create \
     --resource-group myResourceGroup \
     --name myVM2 \
     --availability-set myAvailabilitySet \
     --image Oracle:Oracle-Database-Ee:12.1.0.2:latest \
     --size Standard_DS1_v2  \
     --admin-username azureuser \
     --generate-ssh-keys \

Noteer de waarde publicIpAddress van nadat u myVM2 hebt maken.

Open de TCP-poort voor connectiviteit

Met deze stap configureert u externe eindpunten, die externe toegang tot de Oracle-database toestaan.

Open de poort voor myVM1:

az network nsg rule create --resource-group myResourceGroup\
    --nsg-name myVM1NSG --name allow-oracle\
    --protocol tcp --direction inbound --priority 999 \
    --source-address-prefix '*' --source-port-range '*' \
    --destination-address-prefix '*' --destination-port-range 1521 --access allow

Het resultaat moet er ongeveer uitzien als in het volgende antwoord:

{
  "access": "Allow",
  "description": null,
  "destinationAddressPrefix": "*",
  "destinationPortRange": "1521",
  "direction": "Inbound",
  "etag": "W/\"bd77dcae-e5fd-4bd6-a632-26045b646414\"",
  "id": "/subscriptions/<subscription-id>/resourceGroups/myResourceGroup/providers/Microsoft.Network/networkSecurityGroups/myVmNSG/securityRules/allow-oracle",
  "name": "allow-oracle",
  "priority": 999,
  "protocol": "Tcp",
  "provisioningState": "Succeeded",
  "resourceGroup": "myResourceGroup",
  "sourceAddressPrefix": "*",
  "sourcePortRange": "*"
}

Open de poort voor myVM2:

az network nsg rule create --resource-group myResourceGroup\
    --nsg-name myVM2NSG --name allow-oracle\
    --protocol tcp --direction inbound --priority 999 \
    --source-address-prefix '*' --source-port-range '*' \
    --destination-address-prefix '*' --destination-port-range 1521 --access allow

Verbinding maken met de virtuele machine

Gebruik de volgende opdracht om een SSH-sessie te starten voor de virtuele machine. Vervang het IP-adres door de publicIpAddress waarde voor uw virtuele machine.

$ ssh azureuser@<publicIpAddress>

De database maken op myVM1 (primair)

De Oracle-software is al geïnstalleerd op de Marketplace-installatieprogramma, dus de volgende stap is het installeren van de database.

Schakel over naar de Oracle-superuser:

$ sudo su - oracle

Maak de 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 \
   -ignorePreReqs

De uitvoer moet er ongeveer als volgt uitzien:

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 further details.

Stel de ORACLE_SID en ORACLE_HOME in:

$ ORACLE_HOME=/u01/app/oracle/product/12.1.0/dbhome_1; export ORACLE_HOME
$ ORACLE_SID=cdb1; export ORACLE_SID

U kunt eventueel ORACLE_HOME en ORACLE_SID toevoegen aan het bestand /home/oracle/.bashrc, zodat deze instellingen worden opgeslagen voor toekomstige aanmeldingen:

# add oracle home
export ORACLE_HOME=/u01/app/oracle/product/12.1.0/dbhome_1
# add oracle sid
export ORACLE_SID=cdb1

Data Guard configureren

Archieflogboekmodus inschakelen op myVM1 (primair)

$ sqlplus / as sysdba
SQL> SELECT log_mode FROM v$database;

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

SQL> SHUTDOWN IMMEDIATE;
SQL> STARTUP MOUNT;
SQL> ALTER DATABASE ARCHIVELOG;
SQL> ALTER DATABASE OPEN;

Schakel geforceer logboekregistratie in en zorg ervoor dat er ten minste één logboekbestand aanwezig is:

SQL> ALTER DATABASE FORCE LOGGING;
SQL> ALTER SYSTEM SWITCH LOGFILE;

Maak stand-by-redo-logboeken en stel dezelfde grootte en hoeveelheid in als de redo-logboeken van de primaire database:

SQL> ALTER DATABASE ADD STANDBY LOGFILE ('/u01/app/oracle/oradata/cdb1/standby_redo01.log') SIZE 200M;
SQL> ALTER DATABASE ADD STANDBY LOGFILE ('/u01/app/oracle/oradata/cdb1/standby_redo02.log') SIZE 200M;
SQL> ALTER DATABASE ADD STANDBY LOGFILE ('/u01/app/oracle/oradata/cdb1/standby_redo03.log') SIZE 200M;
SQL> ALTER DATABASE ADD STANDBY LOGFILE ('/u01/app/oracle/oradata/cdb1/standby_redo04.log') SIZE 200M;

Schakel Flashback in (waardoor herstel een stuk eenvoudiger wordt) en stel STAND-BY BESTANDSBEHEER in op _ _ automatisch. Sluit SQL*Plus daarna af.

SQL> ALTER DATABASE FLASHBACK ON;
SQL> ALTER SYSTEM SET STANDBY_FILE_MANAGEMENT=AUTO;
SQL> EXIT;

Service instellen op myVM1 (primair)

Bewerk of maak het bestand tnsnames.ora, dat zich in de map $ORACLE_HOME\network\admin.

Voeg de volgende vermeldingen toe:

cdb1 =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = myVM1)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SID = cdb1)
    )
  )

cdb1_stby =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = myVM2)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SID = cdb1)
    )
  )

Bewerk of maak het bestand listener.ora, dat zich in de map $ORACLE_HOME\network\admin.

Voeg de volgende vermeldingen toe:

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = myVM1)(PORT = 1521))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
  )

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = cdb1_DGMGRL)
      (ORACLE_HOME = /u01/app/oracle/product/12.1.0/dbhome_1)
      (SID_NAME = cdb1)
    )
  )

ADR_BASE_LISTENER = /u01/app/oracle

Data Guard Broker inschakelen:

$ sqlplus / as sysdba
SQL> ALTER SYSTEM SET dg_broker_start=true;
SQL> EXIT;

Start de listener:

$ lsnrctl stop
$ lsnrctl start

Service instellen op myVM2 (stand-by)

SSH naar myVM2:

$ ssh azureuser@<publicIpAddress>

Meld u aan als Oracle:

$ sudo su - oracle

Bewerk of maak het bestand tnsnames.ora, dat zich in de map $ORACLE_HOME\network\admin.

Voeg de volgende vermeldingen toe:

cdb1 =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = myVM1)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SID = cdb1)
    )
  )

cdb1_stby =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = myVM2)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SID = cdb1)
    )
  )

Bewerk of maak het bestand listener.ora, dat zich in de map $ORACLE_HOME\network\admin.

Voeg de volgende vermeldingen toe:

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = myVM2)(PORT = 1521))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
  )

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = cdb1_DGMGRL)
      (ORACLE_HOME = /u01/app/oracle/product/12.1.0/dbhome_1)
      (SID_NAME = cdb1)
    )
  )

ADR_BASE_LISTENER = /u01/app/oracle

Start de listener:

$ lsnrctl stop
$ lsnrctl start

De database herstellen naar myVM2 (stand-by)

Maak het parameterbestand /tmp/initcdb1_stby.ora met de volgende inhoud:

*.db_name='cdb1'

Mappen maken:

mkdir -p /u01/app/oracle/oradata/cdb1/pdbseed
mkdir -p /u01/app/oracle/oradata/cdb1/pdb1
mkdir -p /u01/app/oracle/fast_recovery_area/cdb1
mkdir -p /u01/app/oracle/admin/cdb1/adump

Maak een wachtwoordbestand:

$ orapwd file=/u01/app/oracle/product/12.1.0/dbhome_1/dbs/orapwcdb1 password=OraPasswd1 entries=10

Start de database op myVM2:

$ export ORACLE_SID=cdb1
$ sqlplus / as sysdba

SQL> STARTUP NOMOUNT PFILE='/tmp/initcdb1_stby.ora';
SQL> EXIT;

Herstel de database met behulp van het RMAN-hulpprogramma:

$ rman TARGET sys/OraPasswd1@cdb1 AUXILIARY sys/OraPasswd1@cdb1_stby

Voer de volgende opdrachten uit in RMAN:

DUPLICATE TARGET DATABASE
  FOR STANDBY
  FROM ACTIVE DATABASE
  DORECOVER
  SPFILE
    SET db_unique_name='CDB1_STBY' COMMENT 'Is standby'
  NOFILENAMECHECK;

Wanneer de opdracht is voltooid, ziet u berichten die er ongeveer als volgt uit zien. Sluit RMAN af.

media recovery complete, elapsed time: 00:00:00
Finished recover at 29-JUN-17
Finished Duplicate Db at 29-JUN-17
RMAN> EXIT;

U kunt eventueel ORACLE_HOME en ORACLE_SID toevoegen aan het bestand /home/oracle/.bashrc, zodat deze instellingen worden opgeslagen voor toekomstige aanmeldingen:

# add oracle home
export ORACLE_HOME=/u01/app/oracle/product/12.1.0/dbhome_1
# add oracle sid
export ORACLE_SID=cdb1

Data Guard Broker inschakelen:

$ sqlplus / as sysdba
SQL> ALTER SYSTEM SET dg_broker_start=true;
SQL> EXIT;

Data Guard Broker configureren op myVM1 (primair)

Start Data Guard Manager en meld u aan met behulp van SYS en een wachtwoord. (Gebruik geen besturingssysteemverificatie.) Voer de volgende stappen uit:

$ dgmgrl sys/OraPasswd1@cdb1
DGMGRL for Linux: Version 12.1.0.2.0 - 64bit Production

Copyright (c) 2000, 2013, Oracle. All rights reserved.

Welcome to DGMGRL, type "help" for information.
Connected as SYSDBA.
DGMGRL> CREATE CONFIGURATION my_dg_config AS PRIMARY DATABASE IS cdb1 CONNECT IDENTIFIER IS cdb1;
Configuration "my_dg_config" created with primary database "cdb1"
DGMGRL> ADD DATABASE cdb1_stby AS CONNECT IDENTIFIER IS cdb1_stby MAINTAINED AS PHYSICAL;
Database "cdb1_stby" added
DGMGRL> ENABLE CONFIGURATION;
Enabled.

Controleer de configuratie:

DGMGRL> SHOW CONFIGURATION;

Configuration - my_dg_config

  Protection Mode: MaxPerformance
  Members:
  cdb1      - Primary database
    cdb1_stby - Physical standby database

Fast-Start Failover: DISABLED

Configuration Status:
SUCCESS   (status updated 26 seconds ago)

U hebt de Oracle Data Guard-installatie voltooid. In de volgende sectie ziet u hoe u de connectiviteit test en overschakelt.

Verbinding maken database maken vanaf de clientmachine

Werk het bestand tnsnames.ora op uw clientmachine bij of maak het. Dit bestand staat meestal in $ORACLE_HOME\network\admin.

Vervang de IP-adressen door uw publicIpAddress waarden voor myVM1 en myVM2:

cdb1=
  (DESCRIPTION=
    (ADDRESS=
      (PROTOCOL=TCP)
      (HOST=<myVM1 IP address>)
      (PORT=1521)
    )
    (CONNECT_DATA=
      (SERVER=dedicated)
      (SERVICE_NAME=cdb1)
    )
  )

cdb1_stby=
  (DESCRIPTION=
    (ADDRESS=
      (PROTOCOL=TCP)
      (HOST=<myVM2 IP address>)
      (PORT=1521)
    )
    (CONNECT_DATA=
      (SERVER=dedicated)
      (SERVICE_NAME=cdb1_stby)
    )
  )

Start SQL*Plus:

$ sqlplus sys/OraPasswd1@cdb1
SQL*Plus: Release 12.2.0.1.0 Production on Wed May 10 14:18:31 2017

Copyright (c) 1982, 2016, Oracle.  All rights reserved.

Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options

SQL>

De Data Guard-configuratie testen

Schakel over naar de database op myVM1 (primair)

Overschakelen van primair naar stand-by (cdb1 naar cdb1_stby):

$ dgmgrl sys/OraPasswd1@cdb1
DGMGRL for Linux: Version 12.1.0.2.0 - 64bit Production

Copyright (c) 2000, 2013, Oracle. All rights reserved.

Welcome to DGMGRL, type "help" for information.
Connected as SYSDBA.
DGMGRL> SWITCHOVER TO cdb1_stby;
Performing switchover NOW, please wait...
Operation requires a connection to instance "cdb1" on database "cdb1_stby"
Connecting to instance "cdb1"...
Connected as SYSDBA.
New primary database "cdb1_stby" is opening...
Operation requires start up of instance "cdb1" on database "cdb1"
Starting instance "cdb1"...
ORACLE instance started.
Database mounted.
Switchover succeeded, new primary is "cdb1_stby"
DGMGRL>

U kunt nu verbinding maken met de stand-bydatabase.

Start SQL*Plus:


$ sqlplus sys/OraPasswd1@cdb1_stby
SQL*Plus: Release 12.2.0.1.0 Production on Wed May 10 14:18:31 2017

Copyright (c) 1982, 2016, Oracle.  All rights reserved.

Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options

SQL>

Overschakelen naar de database op myVM2 (stand-by)

Als u wilt overschakelen, moet u het volgende uitvoeren op myVM2:

$ dgmgrl sys/OraPasswd1@cdb1_stby
DGMGRL for Linux: Version 12.1.0.2.0 - 64bit Production

Copyright (c) 2000, 2013, Oracle. All rights reserved.

Welcome to DGMGRL, type "help" for information.
Connected as SYSDBA.
DGMGRL> SWITCHOVER TO cdb1;
Performing switchover NOW, please wait...
Operation requires a connection to instance "cdb1" on database "cdb1"
Connecting to instance "cdb1"...
Connected as SYSDBA.
New primary database "cdb1" is opening...
Operation requires start up of instance "cdb1" on database "cdb1_stby"
Starting instance "cdb1"...
ORACLE instance started.
Database mounted.
Switchover succeeded, new primary is "cdb1"

Nogmaals, u moet nu verbinding kunnen maken met de primaire database.

Start SQL*Plus:


$ sqlplus sys/OraPasswd1@cdb1
SQL*Plus: Release 12.2.0.1.0 Production on Wed May 10 14:18:31 2017

Copyright (c) 1982, 2016, Oracle.  All rights reserved.

Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options

SQL>

U hebt de installatie en configuratie van Data Guard op Oracle Linux.

Verwijder de virtuele machine

Wanneer u de VM niet meer nodig hebt, kunt u de volgende opdracht gebruiken om de resourcegroep, de VM en alle gerelateerde resources te verwijderen:

az group delete --name myResourceGroup

Volgende stappen

Zelfstudie: Virtuele machines met hoge beschikbare gegevens maken

Azure CLI-voorbeelden voor VM-implementatie verkennen