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

Van toepassing op: ✔️ Linux-VM's

U kunt de Azure CLI gebruiken voor het maken en beheren van Azure-resources vanaf de opdrachtregel of in scripts. In dit artikel wordt beschreven hoe u de Azure CLI gebruikt om een Oracle Database 19c Release 3-database te implementeren vanuit de Azure Marketplace-installatiekopieën. In dit artikel wordt vervolgens stapsgewijs beschreven hoe u Data Guard installeert en configureert op een virtuele Azure-machine (VM). Om de omgeving te beveiligen, zijn er geen poorten openbaar toegankelijk en biedt een Azure Bastion-exemplaar toegang tot de Oracle-VM's.

Voordat u begint, moet u ervoor zorgen dat de 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 virtuele Azure-machines maken in dezelfde beschikbaarheidsset:

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

De Azure Marketplace installatiekopieën die u gebruikt om de VM's te maken, is Oracle:oracle-database-19-3:oracle-database-19-0904:latest.

Notitie

Houd rekening met versies die het einde van de levensduur (EOL) hebben bereikt en niet meer worden ondersteund door Red Hat. Geüploade afbeeldingen die zich op of buiten EOL bevinden, worden ondersteund op basis van redelijke zakelijke inspanningen. Zie de Red Hat-webpagina voor productlevenscycli voor meer informatie.

Aanmelden bij Azure

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

az login

Omgevingsvariabelen instellen

Pas de LOCATION variabele voor uw omgeving aan:

LOCATION=eastus
RESOURCE_GROUP="Oracle-Lab"
VM_USERNAME="azureuser"
VM_PASSWORD="OracleLab123"
VNET_NAME="${RESOURCE_GROUP}VNet"

De Azure Bastion-extensie inschakelen

Neem de Azure Bastion-extensie op in de Azure CLI:

az extension add \
  --name bastion

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.

az group create \
  --name $RESOURCE_GROUP \
  --location $LOCATION

Een virtueel netwerk met twee subnetten maken

Maak een virtueel netwerk waarin u alle rekenservices verbindt. Eén subnet host Azure Bastion, een Azure-service die uw databases beschermt tegen openbare toegang. Het tweede subnet host de twee oracle-database-VM's.

Maak ook een netwerkbeveiligingsgroep waarnaar alle services verwijzen om te bepalen welke poorten openbaar worden gemaakt. Alleen poort 443 wordt weergegeven. De Azure Bastion-service opent deze poort automatisch wanneer u dat service-exemplaar maakt.

az network vnet create \
  --resource-group $RESOURCE_GROUP \
  --location $LOCATION \
  --name $VNET_NAME \
  --address-prefix "10.0.0.0/16"
az network vnet subnet create \
  --resource-group $RESOURCE_GROUP \
  --name AzureBastionSubnet \
  --vnet-name $VNET_NAME \
  --address-prefixes 10.0.0.0/24
az network vnet subnet create \
  --resource-group $RESOURCE_GROUP \
  --name OracleSubnet \
  --vnet-name $VNET_NAME \
  --address-prefixes 10.0.1.0/24
az network nsg create \
  --name OracleVM-NSG \
  --resource-group $RESOURCE_GROUP \
  --location $LOCATION

Een beschikbaarheidsset maken

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

az vm availability-set create \
  --resource-group $RESOURCE_GROUP \
  --name OracleVMAvailabilitySet \
  --platform-fault-domain-count 2 \
  --platform-update-domain-count 2

Twee virtuele machines maken

Maak twee vm's met behulp van de opdracht az vm create . In het volgende voorbeeld worden VM's met de naam OracleVM1 en gemaakt OracleVM2.

Maken OracleVM1 (primair):

az vm create \
  --resource-group $RESOURCE_GROUP \
  --name OracleVM1 \
  --availability-set OracleVMAvailabilitySet \
  --image Oracle:oracle-database-19-3:oracle-database-19-0904:latest \
  --size Standard_DS1_v2 \
  --authentication-type password \
  --admin-username $VM_USERNAME \
  --admin-password $VM_PASSWORD \
  --vnet-name $VNET_NAME \
  --subnet OracleSubnet \
  --nsg OracleVM-NSG \
  --os-disk-size-gb 32

Maken OracleVM2 (stand-by):

az vm create \
  --resource-group $RESOURCE_GROUP \
  --name OracleVM2 \
  --availability-set OracleVMAvailabilitySet \
  --image Oracle:oracle-database-19-3:oracle-database-19-0904:latest \
  --size Standard_DS1_v2 \
  --authentication-type password \
  --admin-username $VM_USERNAME \
  --admin-password $VM_PASSWORD \
  --vnet-name $VNET_NAME \
  --subnet OracleSubnet \
  --nsg OracleVM-NSG \
  --os-disk-size-gb 32

Het Azure Bastion-service-exemplaar maken

Azure Bastion biedt een beveiligde tunnel naar alle services die worden gehost in het virtuele netwerk. Het dient als een jumpbox om directe toegang tot uw Oracle-databases te elimineren.

Maak een openbaar IP-adres voor toegang tot de Azure Bastion-service:

az network public-ip create \
  --resource-group $RESOURCE_GROUP \
  --name OracleLabBastionPublicIP \
  --sku Standard

Het Azure Bastion-service-exemplaar maken:

az network bastion create \
  --location $LOCATION \
  --name OracleLabBastion \
  --public-ip-address OracleLabBastionPublicIP \
  --resource-group $RESOURCE_GROUP \
  --vnet-name $VNET_NAME \
  --sku basic

Verbinding maken met de virtuele machine

Nu hebt u toegang OracleVM1 met behulp van de Azure Bastion-service vanuit de Azure Portal.

Voer in het zoekvak bovenaan het venster OracleVM1 in. Selecteer OracleVM1 in de lijst met resultaten om die VM te openen.

Diagram met het zoekvak en de resultaten voor de eerste Oracle-VM.

Selecteer bovenaan het deelvenster Verbinding maken met>Bastion.

Diagram met de selecties voor het maken van verbinding via Azure Bastion.

Voer de gebruikersnaam en het wachtwoord in en selecteer vervolgens de knop Verbinding maken .

Diagram waarin wordt getoond hoe u referenties invoert om verbinding te maken via Azure Bastion.

Er wordt een nieuw tabblad geopend met een beveiligde verbinding met uw virtuele machine, waar de Oracle-software al is geïnstalleerd vanaf een Azure Marketplace-installatiekopieën.

Diagram met een verbinding via Azure Bastion in een browser.

OracleVM1 (primair) configureren

Schakel de firewall uit:

sudo systemctl stop firewalld
sudo systemctl disable firewalld

Stel het gebruikerswachtwoord in oracle :

sudo passwd oracle

Voer het wachtwoord in azureuser : OracleLab123.

Wijzig het oracle gebruikerswachtwoord in OracleLab123. (Voer het opnieuw in om te controleren.)

De database maken op OracleVM1 (primair)

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

Overschakelen naar de Oracle-superuser:

sudo su - oracle

Maak de database:

dbca -silent \
   -createDatabase \
   -datafileDestination /u01/app/oracle/cdb1 \
   -templateName General_Purpose.dbc \
   -gdbname cdb1 \
   -sid cdb1 \
   -responseFile NO_VALUE \
   -characterSet AL32UTF8 \
   -sysPassword OracleLab123 \
   -systemPassword OracleLab123 \
   -createAsContainerDatabase true \
   -numberOfPDBs 1 \
   -pdbName pdb1 \
   -pdbAdminPassword OracleLab123 \
   -databaseType MULTIPURPOSE \
   -automaticMemoryManagement false \
   -storageType FS

Uitvoer moet er ongeveer uitzien als in het volgende antwoord:

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 variabelen en ORACLE_HOME in:

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

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

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

Data Guard configureren

Archieflogboekmodus inschakelen op myVM1 (primair)

Logboekmodus inschakelen:

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 geforceerde 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, waarbij u dezelfde grootte en hoeveelheid instelt als de nieuwe logboeken van de primaire database:

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

Schakel Flashback in (waardoor het herstellen een stuk eenvoudiger wordt) en stel in STANDBY_FILE_MANAGEMENT op AUTO. Sluit DAARNA SQL*Plus af.

SQL> ALTER SYSTEM SET db_recovery_file_dest_size=50G scope=both sid='*';
SQL> ALTER SYSTEM SET db_recovery_file_dest='/u01/app/oracle/cdb1' scope=both sid='*';
SQL> ALTER SYSTEM SET STANDBY_FILE_MANAGEMENT=AUTO SCOPE=BOTH;
SQL> ALTER SYSTEM SET STANDBY_FILE_MANAGEMENT=AUTO;
SQL> EXIT;

De service instellen op OracleVM1 (primair)

Bewerk of maak het bestand tnsnames.ora in de map $ORACLE_HOME/network/admin .

Voeg de volgende vermeldingen toe:

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

Bewerk of maak het bestand listener.ora in de map $ORACLE_HOME/network/admin .

Voeg de volgende vermeldingen toe:

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = OracleVM1)(PORT = 1521))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
  )
SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = cdb1_DGMGRL)
      (ORACLE_HOME = /u01/app/oracle/product/19.0.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> CREATE pfile FROM spfile;
SQL> EXIT;

Kopieer het parameterbestand naar de stand-byserver:

scp -p $ORACLE_HOME/dbs/initcdb1.ora oracle@OracleVM2:$ORACLE_HOME/dbs/

Start de listener:

 lsnrctl stop
 lsnrctl start

De service instellen op OracleVM2 (stand-by)

Ga terug naar Azure Portal. Zoek naar OracleVM2 en selecteer vervolgens de resource in de lijst met resultaten.

Schermopname van het zoekvak en de resultaten voor de tweede Oracle-VM.

Selecteer bovenaan het deelvenster Verbinding maken met>Bastion.

Diagram met selecties voor het maken van verbinding via Azure Bastion.

Voer de gebruikersnaam en het wachtwoord in en selecteer vervolgens de knop Verbinding maken .

Schermopname van het invoeren van de gebruikersnaam en het wachtwoord om verbinding te maken via Azure Bastion.

De firewall uitschakelen op OracleVM2 (stand-by)

sudo systemctl stop firewalld
sudo systemctl disable firewalld

De omgeving voor OracleVM1 configureren

Stel het gebruikerswachtwoord in oracle :

sudo passwd oracle

Voer het wachtwoord in azureuser : OracleLab123.

Wijzig het oracle gebruikerswachtwoord in OracleLab123. (Voer het opnieuw in om te controleren.)

Overschakelen naar de oracle supergebruiker:

$ sudo su – oracle

Stel de ORACLE_SID variabelen en ORACLE_HOME in:

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

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

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

Bewerk of maak het bestand tnsnames.ora in de map $ORACLE_HOME/network/admin .

Voeg de volgende vermeldingen toe:

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

Bewerk of maak het bestand listener.ora in de map $ORACLE_HOME/network/admin .

Voeg de volgende vermeldingen toe:

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = OracleVM2)(PORT = 1521))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
  )
SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = cdb1_DGMGRL)
      (ORACLE_HOME = /u01/app/oracle/product/19.0.0/dbhome_1)
      (SID_NAME = cdb1)
    )
  )
ADR_BASE_LISTENER = /u01/app/oracle

Start de listener:

 lsnrctl stop
 lsnrctl start

De database herstellen naar OracleVM2 (stand-by)

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

*.db_name='cdb1'

Mappen maken:

$ mkdir -p /u01/app/oracle/cdb1
$ 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

Een wachtwoordbestand maken:

$ orapwd file=/u01/app/oracle/product/19.0.0/dbhome_1/dbs/orapwcdb1 password=OracleLab123 entries=10 force=y

Start de database op OracleVM2:

 export ORACLE_SID=cdb1
 sqlplus / as sysdba
SQL> CREATE spfile from pfile;
SQL> STARTUP NOMOUNT PFILE='/tmp/initcdb1_stby.ora';
SQL> EXIT;

Herstel de database met behulp van het hulpprogramma Oracle Recovery Manager (RMAN):

$ rman TARGET sys/OracleLab123@cdb1 AUXILIARY sys/OracleLab123@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;

Berichten die vergelijkbaar zijn met de volgende berichten worden weergegeven wanneer de opdrachten zijn voltooid:

media recovery complete, elapsed time: 00:00:00
Finished recover at 29-JUN-22
Finished Duplicate Db at 29-JUN-22

RMAN afsluiten:

RMAN> EXIT;

Data Guard Broker inschakelen:

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

Data Guard Broker configureren op OracleVM1 (primair)

Start Data Guard Manager en meld u aan met behulp van SYS en een wachtwoord. (Gebruik geen besturingssysteemverificatie.)

$ dgmgrl sys/OracleLab123@cdb1
DGMGRL for Linux: Version 19.0.0.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 installatie van Oracle Data Guard voltooid. In de volgende sectie wordt beschreven hoe u de connectiviteit test en overschakelt.

De database verbinden vanaf de clientcomputer

Werk het bestand tnsnames.ora bij op uw clientcomputer. Dit bestand bevindt zich meestal in $ORACLE_HOME/network/admin.

cdb1=
  (DESCRIPTION=
    (ADDRESS=
      (PROTOCOL=TCP)
      (HOST=OracleVM1)
      (PORT=1521)
    )
    (CONNECT_DATA=
      (SERVER=dedicated)
      (SERVICE_NAME=cdb1)
    )
  )
cdb1_stby=
  (DESCRIPTION=
    (ADDRESS=
      (PROTOCOL=TCP)
      (HOST=OracleVM2)
      (PORT=1521)
    )
    (CONNECT_DATA=
      (SERVER=dedicated)
      (SERVICE_NAME=cdb1_stby)
    )
  )

Start SQL*Plus:

$ sqlplus sys/OraPasswd1@cdb1
SQL*Plus: Release 19.0.0.0 Production on Wed May 10 14:18:31 2022
Copyright (c) 1982, 2016, Oracle.  All rights reserved.
Connected to:
Oracle Database 12c Enterprise Edition Release 19.0.0.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options
SQL>

De Data Guard-configuratie testen

Overschakelen naar de database op OracleVM1 (primair)

Schakel over van primair naar stand-by (cdb1 naar cdb1_stby):

$ dgmgrl sys/OracleLab123@cdb1
DGMGRL for Linux: Version 19.0.0.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/OracleLab123@cdb1_stby
SQL*Plus: Release 19.0.0.0 Production on Wed May 10 14:18:31 2022
Copyright (c) 1982, 2016, Oracle.  All rights reserved.
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options
SQL>

De database overschakelen op OracleVM2 (stand-by)

Als u wilt overschakelen, voert u de volgende code uit op OracleVM2:

$ dgmgrl sys/OracleLab123@cdb1_stby
DGMGRL for Linux: Version 190.0.0.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"

U moet nu opnieuw verbinding kunnen maken met de primaire database. Start SQL*Plus:

$ sqlplus sys/OracleLab123@cdb1
SQL*Plus: Release 19.0.0.0 Production on Wed May 10 14:18:31 2022
Copyright (c) 1982, 2016, Oracle.  All rights reserved.
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options
SQL>

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

Verwijder de virtuele machine

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

az group delete --name $RESOURCE_GROUP

Volgende stappen