Implementera Oracle Data Guard på en Linux-baserad virtuell Azure-dator

Gäller för: ✔️ Virtuella Linux-datorer

Du kan använda Azure CLI för att skapa och hantera Azure-resurser från kommandoraden eller i skript. Den här artikeln beskriver hur du använder Azure CLI för att distribuera en Oracle Database 19c Release 3-databas från Azure Marketplace avbildningen. Den här artikeln visar sedan steg för steg hur du installerar och konfigurerar Data Guard på en virtuell Azure-dator (VM). För att skydda miljön blir inga portar offentligt tillgängliga och en Azure Bastion-instans ger åtkomst till de virtuella Oracle-datorerna.

Kontrollera att Azure CLI är installerat innan du börjar. Mer information finns i installationsguiden för Azure CLI.

Förbereda miljön

Antaganden

Om du vill installera Oracle Data Guard måste du skapa två virtuella Azure-datorer på samma tillgänglighetsuppsättning:

  • Den primära virtuella datorn (OracleVM1) har en Oracle-instans som körs.
  • Den virtuella standby-datorn (OracleVM2) har endast Oracle-programvaran installerad.

Den Azure Marketplace avbildning som du använder för att skapa de virtuella datorerna är Oracle:oracle-database-19-3:oracle-database-19-0904:latest.

Anteckning

Tänk på versioner som har nått slutet av livet (EOL) och som inte längre stöds av Red Hat. Uppladdade bilder som ligger på eller utanför EOL kommer att stödjas på grundval av rimliga affärsinsatser. Mer information finns på Red Hat-webbsidan för produktlivscykler.

Logga in på Azure

Logga in på din Azure-prenumeration med kommandot az login och följ anvisningarna på skärmen.

az login

Ange miljövariabler

Justera variabeln LOCATION för din miljö:

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

Aktivera Azure Bastion-tillägget

Inkludera Azure Bastion-tillägget i Azure CLI:

az extension add \
  --name bastion

Skapa en resursgrupp

Skapa en resursgrupp med kommandot az group create. En Azure-resursgrupp är en logisk container där Azure-resurser distribueras och hanteras.

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

Skapa ett virtuellt nätverk med två undernät

Skapa ett virtuellt nätverk där du ansluter alla beräkningstjänster. Ett undernät är värd för Azure Bastion, en Azure-tjänst som skyddar dina databaser från offentlig åtkomst. Det andra undernätet är värd för de två virtuella Oracle-databasdatorerna.

Skapa också en nätverkssäkerhetsgrupp som alla tjänster refererar till för att avgöra vilka portar som exponeras offentligt. Endast port 443 exponeras. Azure Bastion-tjänsten öppnar den här porten automatiskt när du skapar den tjänstinstansen.

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

Skapa en tillgänglighetsuppsättning

Det är valfritt att skapa en tillgänglighetsuppsättning, men vi rekommenderar det. Mer information finns i riktlinjerna för Azure-tillgänglighetsuppsättningar.

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

Skapa två virtuella datorer

Skapa två virtuella datorer med kommandot az vm create . I följande exempel skapas virtuella datorer med namnet OracleVM1 och OracleVM2.

Skapa OracleVM1 (primär):

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

Skapa OracleVM2 (vänteläge):

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

Skapa Azure Bastion-tjänstinstansen

Azure Bastion tillhandahåller en säker tunnel till alla tjänster som finns i det virtuella nätverket. Den fungerar som en hoppruta för att eliminera direkt åtkomst till dina Oracle-databaser.

Skapa en offentlig IP-adress för åtkomst till Azure Bastion-tjänsten:

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

Skapa Azure Bastion-tjänstinstansen:

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

Ansluta till den virtuella datorn

Nu får du åtkomst OracleVM1 med hjälp av Azure Bastion-tjänsten från Azure Portal.

I sökrutan överst i fönstret anger du OracleVM1. I resultatlistan väljer du OracleVM1 för att öppna den virtuella datorn.

Diagram som visar sökrutan och resultaten för den första virtuella Oracle-datorn.

Längst upp i fönstret väljer du Anslut>Bastion.

Diagram som visar val för att ansluta via Azure Bastion.

Ange användarnamnet och lösenordet och välj sedan knappen Anslut .

Diagram som visar hur du anger autentiseringsuppgifter för att ansluta via Azure Bastion.

En ny flik öppnas med en säker anslutning till den virtuella datorn, där Oracle-programvaran redan är installerad från en Azure Marketplace avbildning.

Diagram som visar en anslutning via Azure Bastion i en webbläsare.

Konfigurera OracleVM1 (primär)

Inaktivera brandväggen:

sudo systemctl stop firewalld
sudo systemctl disable firewalld

Ange användarlösenordet oracle :

sudo passwd oracle

azureuser Ange lösenordet: OracleLab123.

Ändra användarlösenordet oracle till OracleLab123. (Ange det igen för att verifiera.)

Skapa databasen på OracleVM1 (primär)

Oracle-programvaran är redan installerad på Azure Marketplace avbildningen, så nästa steg är att installera databasen.

Växla till Oracle-superanvändaren:

sudo su - oracle

Skapa databasen:

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

Utdata bör se ut ungefär som följande svar:

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.

Ange variablerna ORACLE_SID och ORACLE_HOME :

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

Du kan också lägga till ORACLE_HOME och ORACLE_SID i filen /home/oracle/.bashrc , så att dessa inställningar sparas för framtida inloggningar:

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

Konfigurera Data Guard

Aktivera arkivloggläge på myVM1 (primär)

Aktivera loggläge:

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;

Aktivera tvingad loggning och kontrollera att minst en loggfil finns:

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

Skapa redologgar för vänteläge och ange samma storlek och kvantitet som den primära databasen gör om loggarna:

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;

Aktivera Flashback (vilket gör återställningen mycket enklare) och ställ in STANDBY_FILE_MANAGEMENTAUTO. Avsluta SQL*Plus efter det.

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;

Konfigurera tjänsten på OracleVM1 (primär)

Redigera eller skapa filen tnsnames.ora , som finns i mappen $ORACLE_HOME/network/admin .

Lägg till följande poster:

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

Redigera eller skapa filen listener.ora , som finns i mappen $ORACLE_HOME/network/admin .

Lägg till följande poster:

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

Aktivera Data Guard Broker:

sqlplus / as sysdba
SQL> ALTER SYSTEM SET dg_broker_start=true;
SQL> CREATE pfile FROM spfile;
SQL> EXIT;

Kopiera parameterfilen till väntelägesservern:

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

Starta lyssnaren:

 lsnrctl stop
 lsnrctl start

Konfigurera tjänsten på OracleVM2 (vänteläge)

Gå tillbaka till Azure-portalen. Sök efter OracleVM2 och välj sedan resursen i resultatlistan.

Skärmbild av sökrutan och resultaten för den andra virtuella Oracle-datorn.

Längst upp i fönstret väljer du Anslut>Bastion.

Diagram som visar val för att ansluta via Azure Bastion.

Ange användarnamnet och lösenordet och välj sedan knappen Anslut .

Skärmbild av att ange autentiseringsuppgifter för användarnamn och lösenord för att ansluta via Azure Bastion.

Inaktivera brandväggen på OracleVM2 (vänteläge)

sudo systemctl stop firewalld
sudo systemctl disable firewalld

Konfigurera miljön för OracleVM1

Ange användarlösenordet oracle :

sudo passwd oracle

azureuser Ange lösenordet: OracleLab123.

Ändra användarlösenordet oracle till OracleLab123. (Ange det igen för att verifiera.)

Växla till superanvändaren oracle :

$ sudo su – oracle

Ange variablerna ORACLE_SID och ORACLE_HOME :

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

Du kan också lägga till ORACLE_HOME och ORACLE_SID i filen /home/oracle/.bashrc , så att dessa inställningar sparas för framtida inloggningar:

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

Redigera eller skapa filen tnsnames.ora , som finns i mappen $ORACLE_HOME/network/admin .

Lägg till följande poster:

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

Redigera eller skapa filen listener.ora , som finns i mappen $ORACLE_HOME/network/admin .

Lägg till följande poster:

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

Starta lyssnaren:

 lsnrctl stop
 lsnrctl start

Återställa databasen till OracleVM2 (vänteläge)

Skapa parameterfilen /tmp/initcdb1_stby.ora med följande innehåll:

*.db_name='cdb1'

Skapa mappar:

$ 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

Skapa en lösenordsfil:

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

Starta databasen på OracleVM2:

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

Återställ databasen med hjälp av verktyget Oracle Recovery Manager (RMAN):

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

Kör följande kommandon i RMAN:

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

Meddelanden som liknar följande visas när kommandona har slutförts:

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

Avsluta RMAN:

RMAN> EXIT;

Aktivera Data Guard Broker:

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

Konfigurera Data Guard Broker på OracleVM1 (primär)

Starta Data Guard Manager och logga in med hjälp av SYS och ett lösenord. (Använd inte OS-autentisering.)

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

Granska konfigurationen:

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)

Du har slutfört Oracle Data Guard-installationen. I nästa avsnitt visas hur du testar anslutningen och växlar över.

Ansluta databasen från klientdatorn

Uppdatera filen tnsnames.ora på klientdatorn. Den här filen finns vanligtvis i $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)
    )
  )

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

Testa Data Guard-konfigurationen

Växla över databasen på OracleVM1 (primär)

Växla från primär till vänteläge (cdb1 till 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>

Nu kan du ansluta till väntelägesdatabasen. Starta 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>

Växla över databasen på OracleVM2 (vänteläge)

Om du vill växla över kör du följande kod på 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"

Återigen bör du nu kunna ansluta till den primära databasen. Starta 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>

Du har slutfört installationen och konfigurationen av Data Guard på Oracle Linux.

Ta bort den virtuella datorn

När du inte längre behöver de virtuella datorerna kan du använda följande kommando för att ta bort resursgruppen, de virtuella datorerna och alla relaterade resurser:

az group delete --name $RESOURCE_GROUP

Nästa steg