Implementace Oracle Data Guard na virtuálním počítači Azure s Linuxem

Platí pro: ✔️ Virtuální počítače s Linuxem

Pomocí Azure CLI můžete vytvářet a spravovat prostředky Azure z příkazového řádku nebo ve skriptech. Tento článek popisuje, jak pomocí Azure CLI nasadit databázi Oracle Database 19c verze 3 z Azure Marketplace image. Tento článek vám pak krok za krokem ukáže, jak nainstalovat a nakonfigurovat Ochranu Data Guard na virtuálním počítači Azure. Kvůli lepšímu zabezpečení prostředí nebudou žádné porty veřejně přístupné a instance služby Azure Bastion bude poskytovat přístup k virtuálním počítačům Oracle.

Než začnete, ujistěte se, že je nainstalované Rozhraní příkazového řádku Azure CLI. Další informace najdete v průvodci instalací Azure CLI.

Příprava prostředí

Předpoklady

Pokud chcete nainstalovat Oracle Data Guard, musíte vytvořit dva virtuální počítače Azure ve stejné skupině dostupnosti:

  • Primární virtuální počítač (OracleVM1) má spuštěnou instanci Oracle.
  • Na pohotovostním virtuálním počítači (OracleVM2) je nainstalovaný pouze software Oracle.

Image Azure Marketplace, kterou použijete k vytvoření virtuálních počítačů, je Oracle:oracle-database-19-3:oracle-database-19-0904:latest.

Poznámka

Mějte na paměti verze, které dosáhly konce životnosti (EOL) a red Hat je už nepodporuje. Nahrané obrázky, které jsou na úrovni EOL nebo mimo ni, budou podporovány na základě přiměřeného obchodního úsilí. Další informace najdete na webové stránce společnosti Red Hat pro životní cyklus produktů.

Přihlášení k Azure

Přihlaste se ke svému předplatnému Azure pomocí příkazu az login a postupujte podle pokynů na obrazovce.

az login

Nastavení proměnných prostředí

Upravte proměnnou LOCATION pro vaše prostředí:

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

Povolení rozšíření Azure Bastion

Do Azure CLI zahrňte rozšíření Azure Bastion:

az extension add \
  --name bastion

Vytvoření skupiny prostředků

Vytvořte skupinu prostředků pomocí příkazu az group create. Skupina prostředků Azure je logický kontejner, ve kterém se nasazují a spravují prostředky Azure.

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

Vytvoření virtuální sítě se dvěma podsítěmi

Vytvořte virtuální síť, do které připojíte všechny výpočetní služby. Jedna podsíť bude hostitelem služby Azure Bastion, která pomáhá chránit databáze před veřejným přístupem. Druhá podsíť bude hostitelem dvou databázových virtuálních počítačů Oracle.

Vytvořte také skupinu zabezpečení sítě, na kterou budou všechny služby odkazovat, aby bylo možné určit, které porty jsou veřejně přístupné. Bude zpřístupněn pouze port 443. Služba Azure Bastion otevře tento port automaticky při vytváření této instance služby.

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

Vytvoření skupiny dostupnosti

Vytvoření skupiny dostupnosti je volitelné, ale doporučujeme to. Další informace najdete v pokynech pro skupiny dostupnosti Azure.

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

Vytvoření dvou virtuálních počítačů

Vytvořte dva virtuální počítače pomocí příkazu az vm create . Následující příklad vytvoří virtuální počítače s názvy OracleVM1 a OracleVM2.

Vytvořit OracleVM1 (primární):

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

Vytvořit OracleVM2 (pohotovostní):

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

Vytvoření instance služby Azure Bastion

Azure Bastion poskytuje zabezpečené tunelové propojení pro všechny služby hostované ve virtuální síti. Slouží jako jump box, který eliminuje přímý přístup k databázím Oracle.

Vytvořte veřejnou IP adresu pro přístup ke službě Azure Bastion:

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

Vytvořte instanci služby Azure Bastion:

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

Připojení k virtuálnímu počítači

Teď budete přistupovat OracleVM1 pomocí služby Azure Bastion z Azure Portal.

Do vyhledávacího pole v horní části okna zadejte OracleVM1. V seznamu výsledků vyberte OracleVM1 a otevřete virtuální počítač.

Diagram znázorňující vyhledávací pole a výsledky pro první virtuální počítač Oracle

V horní části podokna vyberte Připojit>Bastion.

Diagram znázorňující výběry pro připojení přes Azure Bastion

Zadejte uživatelské jméno a heslo a pak vyberte tlačítko Připojit .

Diagram znázorňující, jak zadat přihlašovací údaje pro připojení prostřednictvím služby Azure Bastion

Otevře se nová karta se zabezpečeným připojením k vašemu virtuálnímu počítači, kde je software Oracle už nainstalovaný z Azure Marketplace image.

Diagram znázorňující připojení prostřednictvím služby Azure Bastion v prohlížeči

Konfigurace OracleVM1 (primární)

Zakažte bránu firewall:

sudo systemctl stop firewalld
sudo systemctl disable firewalld

oracle Nastavte heslo uživatele:

sudo passwd oracle

azureuser Zadejte heslo: OracleLab123.

oracle Změňte heslo uživatele na OracleLab123. (Zadejte ho znovu a ověřte ho.)

Vytvoření databáze na počítači OracleVM1 (primární)

Software Oracle je už na imagi Azure Marketplace nainstalovaný, takže dalším krokem je instalace databáze.

Přepněte na superuživatele Oracle:

sudo su - oracle

Vytvořte databázi:

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

Výstupy by měly vypadat podobně jako následující odpověď:

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.

ORACLE_SID Nastavte proměnné a ORACLE_HOME :

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

Volitelně můžete do souboru /home/oracle/.bashrc přidat ORACLE_HOME aORACLE_SID, aby se tato nastavení uložila pro budoucí přihlášení:

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

Konfigurace ochrany Data Guard

Povolení režimu archivačního protokolu na myVM1 (primární)

Povolit režim protokolu:

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;

Povolte vynucené protokolování a ujistěte se, že je k dispozici alespoň jeden soubor protokolu:

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

Vytvořte pohotovostní protokoly opakování a nastavujte stejnou velikost a množství jako protokoly opakování primární databáze:

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;

Zapněte možnost Flashback (což usnadňuje obnovení) a nastavte STANDBY_FILE_MANAGEMENT na AUTO. Potom ukončete SQL*Plus.

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;

Nastavení služby na Počítači OracleVM1 (primární)

Upravte nebo vytvořte soubor tnsnames.ora , který je ve složce $ORACLE_HOME/network/admin .

Přidejte následující položky:

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

Upravte nebo vytvořte soubor listener.ora , který je ve složce $ORACLE_HOME/network/admin .

Přidejte následující položky:

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

Povolení zprostředkovatele Data Guard:

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

Zkopírujte soubor parametrů na pohotovostní server:

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

Spusťte naslouchací proces:

 lsnrctl stop
 lsnrctl start

Nastavení služby na počítači OracleVM2 (pohotovostní režim)

Vraťte se na Azure Portal. Vyhledejte OracleVM2 a pak v seznamu výsledků vyberte prostředek.

Snímek obrazovky s vyhledávacím polem a výsledky pro druhý virtuální počítač Oracle

V horní části podokna vyberte Připojit>Bastion.

Diagram znázorňující výběry pro připojení prostřednictvím služby Azure Bastion

Zadejte uživatelské jméno a heslo a pak vyberte tlačítko Připojit .

Snímek obrazovky se zadáváním přihlašovacích údajů uživatelského jména a hesla pro připojení prostřednictvím služby Azure Bastion

Zakázání brány firewall na počítači OracleVM2 (pohotovostní režim)

sudo systemctl stop firewalld
sudo systemctl disable firewalld

Konfigurace prostředí pro OracleVM1

oracle Nastavte heslo uživatele:

sudo passwd oracle

azureuser Zadejte heslo: OracleLab123.

oracle Změňte heslo uživatele na OracleLab123. (Zadejte ho znovu a ověřte ho.)

Přepněte na oracle superuživatele:

$ sudo su – oracle

ORACLE_SID Nastavte proměnné a ORACLE_HOME :

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

Volitelně můžete do souboru /home/oracle/.bashrc přidat ORACLE_HOME aORACLE_SID, aby se tato nastavení uložila pro budoucí přihlášení:

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

Upravte nebo vytvořte soubor tnsnames.ora , který je ve složce $ORACLE_HOME/network/admin .

Přidejte následující položky:

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

Upravte nebo vytvořte soubor listener.ora , který je ve složce $ORACLE_HOME/network/admin .

Přidejte následující položky:

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

Spusťte naslouchací proces:

 lsnrctl stop
 lsnrctl start

Obnovení databáze na OracleVM2 (pohotovostní režim)

Vytvořte soubor parametrů /tmp/initcdb1_stby.ora s následujícím obsahem:

*.db_name='cdb1'

Vytváření složek:

$ 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

Vytvořte soubor s heslem:

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

Spusťte databázi v :OracleVM2

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

Obnovte databázi pomocí nástroje Oracle Recovery Manager (RMAN):

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

V RMANu spusťte následující příkazy:

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

Po dokončení příkazů se zobrazí podobné zprávy:

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

Ukončit RMAN:

RMAN> EXIT;

Povolení zprostředkovatele Data Guard:

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

Konfigurace zprostředkovatele Data Guard na počítači OracleVM1 (primární)

Spusťte Data Guard Manager a přihlaste se pomocí sys a hesla. (Nepoužívejte ověřování operačního systému.)

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

Zkontrolujte konfiguraci:

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)

Dokončili jste nastavení Oracle Data Guard. V další části se dozvíte, jak otestovat připojení a přepnout ho.

Připojení databáze z klientského počítače

Aktualizujte soubor tnsnames.ora na klientském počítači. Tento soubor je obvykle v $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)
    )
  )

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

Testování konfigurace ochrany Data Guard

Přepnutí databáze na počítači OracleVM1 (primární)

Přepnutí z primárního na pohotovostní (cdb1 na 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>

Teď se můžete připojit k pohotovostní databázi. Spustit 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>

Přepnutí databáze na počítači OracleVM2 (pohotovostní režim)

Pokud chcete přepnout, spusťte na zařízení následující kód 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"

Opět byste se teď měli být schopni připojit k primární databázi. Spustit 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>

Dokončili jste instalaci a konfiguraci ochrany Data Guard v Oracle Linuxu.

Odstraňte virtuální počítač

Pokud už virtuální počítače nepotřebujete, můžete pomocí následujícího příkazu odebrat skupinu prostředků, virtuální počítače a všechny související prostředky:

az group delete --name $RESOURCE_GROUP

Další kroky