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

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

Azure CLI slouží k vytváření a správě prostředků Azure z příkazového řádku nebo ve skriptech. Tento článek popisuje, jak pomocí Azure CLI nasadit databázi Oracle Database 12c z Azure Marketplace image. V tomto článku se pak můžete krok za krokem se způsobem instalace a konfigurace ochrany Data Guard na virtuálním počítači Azure.

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č (myVM1) má spuštěnou instanci Oracle.
  • Pohotovostní virtuální počítač (myVM2) má nainstalovaný jenom software Oracle.

Image z Marketplace, kterou použijete k vytvoření virtuálních počítačů, je Oracle:Oracle-Database-Ee:12.1.0.2:latest.

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

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 nasadí a spravují prostředky Azure.

Následující příklad vytvoří skupinu prostředků myResourceGroup v umístění westus:

az group create --name myResourceGroup --location westus

Vytvoření skupiny dostupnosti

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

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

Vytvoření virtuálního počítače

Vytvořte virtuální počítač pomocí příkazu az vm create.

Následující příklad vytvoří dva virtuální počítače s názvem a myVM1 myVM2 . Vytvoří také klíče SSH, pokud ještě neexistují ve výchozím umístění klíče. Chcete-li použít konkrétní sadu klíčů, použijte možnost --ssh-key-value.

Vytvoření virtuálního počítače myVM1 (primární):

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 \

Po vytvoření virtuálního počítače se v Azure CLI zobrazí podobné informace jako v následujícím příkladu. Poznamenejte si hodnotu publicIpAddress . Tuto adresu použijete pro přístup k virtuálnímu počítače.

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

Vytvoření virtuálního počítače myVM2 (pohotovostní režim):

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 \

Poznamenejte si hodnotu publicIpAddress po vytvoření virtuálního počítače myVM2.

Otevření portu TCP pro připojení

Tento krok nakonfiguruje externí koncové body, které umožňují vzdálený přístup k databázi Oracle.

Otevřete port pro 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

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

{
  "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": "*"
}

Otevřete port pro 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

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

Pomocí následujícího příkazu vytvořte s virtuálním počítačem relaci SSH. Nahraďte IP adresu publicIpAddress hodnotou vašeho virtuálního počítače.

$ ssh azureuser@<publicIpAddress>

Vytvoření databáze na myVM1 (primární)

Software Oracle je už nainstalovaný na ibitové kopii Marketplace, 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 \
   -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

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.

Nastavte ORACLE_SID a ORACLE_HOME proměnné:

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

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

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

Konfigurace ochrany Data Guard

Povolení režimu archivního protokolu na virtuálním počítači myVM1 (primární)

$ 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 pro znovunastavování stejné velikosti a množství jako protokoly znovunastavování primární databáze:

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;

Zapněte Flashback (což velmi usnadňuje obnovení) a nastavte STANDBY FILE MANAGEMENT na auto. Exit SQLPlus after that (Správa SOUBORŮ V POHOTOVOSTNÍM REŽIMU) nastavte na auto. Exit SQLPlus after that (Správa SOUBORŮ V POHOTOVOSTNÍM REŽIMU) nastavte na _ auto. Exit SQL*Plus after that (Správa souborů v pohotovostním režimu) nastavte na _ auto.

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

Nastavení služby na myVM1 (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 = myVM1)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SID = cdb1)
    )
  )

cdb1_stby =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = myVM2)(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 = 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

Povolení zprostředkovatele ochrany Data Guard:

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

Spusťte naslouchací proces:

$ lsnrctl stop
$ lsnrctl start

Nastavení služby na virtuálním počítači myVM2 (pohotovostní režim)

SSH k virtuálnímu počítače myVM2:

$ ssh azureuser@<publicIpAddress>

Přihlaste se jako Oracle:

$ sudo su - oracle

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 = myVM1)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SID = cdb1)
    )
  )

cdb1_stby =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = myVM2)(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 = 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

Spusťte naslouchací proces:

$ lsnrctl stop
$ lsnrctl start

Obnovení databáze do virtuálního počítače myVM2 (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/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 hesla:

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

Spusťte databázi na virtuálním počítači myVM2:

$ export ORACLE_SID=cdb1
$ sqlplus / as sysdba

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

Obnovte databázi pomocí nástroje RMAN:

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

V nástroji RMAN 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říkazu by se měly zobrazit podobné zprávy jako v následujícím příkladu. Ukončete nástroj RMAN.

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

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

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

Povolení zprostředkovatele ochrany Data Guard:

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

Konfigurace zprostředkovatele ochrany Data Guard na virtuálním počítači myVM1 (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.) Proveďte následující:

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

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 si ukážeme, jak otestovat připojení a přepnout.

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

Na klientském počítači aktualizujte nebo vytvořte soubor tnsnames.ora. Tento soubor je obvykle ve $ORACLE_HOME\network\admin.

Nahraďte IP adresy publicIpAddress vašimi hodnotami pro myVM1 a 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)
    )
  )

Začněte 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>

Testování konfigurace ochrany Data Guard

Přepněte databázi na myVM1 (primární)

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

Teď se můžete připojit k pohotovostní databázi.

Začněte 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>

Přepněte databázi na myVM2 (pohotovostní režim).

Pokud chcete přepnout, spusťte na počítači myVM2 následující příkaz:

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

Opět byste se teď měli být schopni připojit k primární databázi.

Začněte 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>

Dokončili jste instalaci a konfiguraci ochrany Data Guard na Oracle Linux.

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

Pokud už virtuální počítač nepotřebujete, můžete k odebrání skupiny prostředků, virtuálního počítače a všech souvisejících prostředků použít následující příkaz:

az group delete --name myResourceGroup

Další kroky

Kurz: Vytvoření vysoce dostupných virtuálních počítačů

Prozkoumejte ukázky Azure CLI pro nasazení virtuálního počítače.