Implementera Oracle Data Guard på en virtuell Azure Linux-dator
Gäller för: ✔️ Virtuella Linux-datorer
Azure CLI används 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 Oracle Database 12c-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).
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 (myVM1) har en Oracle-instans som körs.
- Den virtuella datorn i vänteläge (myVM2) har endast Oracle-programvaran installerad.
Marketplace-avbildningen som du använder för att skapa de virtuella datorerna är Oracle:Oracle-Database-Ee:12.1.0.2:latest.
Logga in på Azure
Logga in på din Azure-prenumeration med kommandot az login och följ anvisningarna på skärmen.
az login
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.
I följande exempel skapas en resursgrupp med namnet myResourceGroup på platsen westus:
az group create --name myResourceGroup --location westus
Skapa en tillgänglighetsuppsättning
Det är valfritt att skapa en tillgänglighetsuppsättning, men vi rekommenderar det. Mer information finns i riktlinjer för Tillgänglighetsuppsättningar i Azure.
az vm availability-set create \
--resource-group myResourceGroup \
--name myAvailabilitySet \
--platform-fault-domain-count 2 \
--platform-update-domain-count 2
Skapa en virtuell dator
Skapa en virtuell dator med kommandot az vm create.
I följande exempel skapas två virtuella datorer med namnet myVM1 och myVM2 . Det skapar också SSH-nycklar, om de inte redan finns på en standardnyckelplats. Om du vill använda en specifik uppsättning nycklar använder du alternativet --ssh-key-value.
Skapa myVM1 (primär):
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 \
När du har skapat den virtuella datorn visar Azure CLI information som liknar följande exempel. Observera värdet för publicIpAddress . Du använder den här adressen för att få åtkomst till den virtuella datorn.
{
"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"
}
Skapa myVM2 (vänteläge):
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 \
Observera värdet för när publicIpAddress du har skapat myVM2.
Öppna TCP-porten för anslutning
Det här steget konfigurerar externa slutpunkter som tillåter fjärråtkomst till Oracle-databasen.
Öppna porten för 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
Resultatet bör se ut ungefär som följande svar:
{
"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": "*"
}
Öppna porten för 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
Ansluta till den virtuella datorn
Använd följande kommando för att skapa en SSH-session med den virtuella datorn. Ersätt IP-adressen med publicIpAddress värdet för den virtuella datorn.
$ ssh azureuser@<publicIpAddress>
Skapa databasen på myVM1 (primär)
Oracle-programvaran är redan installerad på Marketplace-avbildningen, så nästa steg är att installera databasen.
Växla till Oracle-superanvändaren:
$ sudo su - oracle
Skapa databasen:
$ 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
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 ORACLE_SID och ORACLE_HOME variabler:
$ ORACLE_HOME=/u01/app/oracle/product/12.1.0/dbhome_1; export ORACLE_HOME
$ ORACLE_SID=cdb1; export ORACLE_SID
Du kan också lägga till ORACLE_HOME och ORACLE_SID filen /home/oracle/.bashrc, så att de här inställningarna sparas för framtida inloggningar:
# add oracle home
export ORACLE_HOME=/u01/app/oracle/product/12.1.0/dbhome_1
# add oracle sid
export ORACLE_SID=cdb1
Konfigurera Data Guard
Aktivera arkivloggläge på myVM1 (primär)
$ 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 standby-redo-loggar och ange samma storlek och kvantitet som den primära databasen gör om loggarna:
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;
Aktivera Flashback (vilket gör återställningen mycket enklare) och ställ in HANTERING AV VÄNTELÄGE PÅ _ _ AUTOMATISK. Avsluta SQL*Plus efter det.
SQL> ALTER DATABASE FLASHBACK ON;
SQL> ALTER SYSTEM SET STANDBY_FILE_MANAGEMENT=AUTO;
SQL> EXIT;
Konfigurera tjänsten på myVM1 (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 = myVM1)(PORT = 1521))
)
(CONNECT_DATA =
(SID = cdb1)
)
)
cdb1_stby =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = myVM2)(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 = 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
Aktivera koordinator för Data Guard:
$ sqlplus / as sysdba
SQL> ALTER SYSTEM SET dg_broker_start=true;
SQL> EXIT;
Starta lyssnaren:
$ lsnrctl stop
$ lsnrctl start
Konfigurera tjänsten på myVM2 (vänteläge)
SSH till myVM2:
$ ssh azureuser@<publicIpAddress>
Logga in som Oracle:
$ sudo su - oracle
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 = myVM1)(PORT = 1521))
)
(CONNECT_DATA =
(SID = cdb1)
)
)
cdb1_stby =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = myVM2)(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 = 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
Starta lyssnaren:
$ lsnrctl stop
$ lsnrctl start
Återställa databasen till myVM2 (vänteläge)
Skapa parameterfilen /tmp/initcdb1_stby.ora med följande innehåll:
*.db_name='cdb1'
Skapa mappar:
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/12.1.0/dbhome_1/dbs/orapwcdb1 password=OraPasswd1 entries=10
Starta databasen på myVM2:
$ export ORACLE_SID=cdb1
$ sqlplus / as sysdba
SQL> STARTUP NOMOUNT PFILE='/tmp/initcdb1_stby.ora';
SQL> EXIT;
Återställ databasen med hjälp av RMAN-verktyget:
$ rman TARGET sys/OraPasswd1@cdb1 AUXILIARY sys/OraPasswd1@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;
Du bör se meddelanden som liknar följande när kommandot har slutförts. Avsluta RMAN.
media recovery complete, elapsed time: 00:00:00
Finished recover at 29-JUN-17
Finished Duplicate Db at 29-JUN-17
RMAN> EXIT;
Du kan också lägga till ORACLE_HOME och ORACLE_SID filen /home/oracle/.bashrc, så att de här inställningarna sparas för framtida inloggningar:
# add oracle home
export ORACLE_HOME=/u01/app/oracle/product/12.1.0/dbhome_1
# add oracle sid
export ORACLE_SID=cdb1
Aktivera koordinator för Data Guard:
$ sqlplus / as sysdba
SQL> ALTER SYSTEM SET dg_broker_start=true;
SQL> EXIT;
Konfigurera Data Guard Broker på myVM1 (primär)
Starta Data Guard Manager och logga in med hjälp av SYS och ett lösenord. (Använd inte OS-autentisering.) Utför följande:
$ 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.
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. Nästa avsnitt visar hur du testar anslutningen och växlar över.
Anslut databasen från klientdatorn
Uppdatera eller skapa filen tnsnames.ora på klientdatorn. Den här filen finns vanligtvis i $ORACLE_HOME\network\admin.
Ersätt IP-adresserna med publicIpAddress dina värden för myVM1 och 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)
)
)
Starta 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>
Testa Data Guard-konfigurationen
Växla över databasen på myVM1 (primär)
Växla från primärt till vänteläge (cdb1 till 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>
Nu kan du ansluta till standby-databasen.
Starta 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>
Växla över databasen på myVM2 (vänteläge)
Om du vill växla över kör du följande på 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"
Återigen bör du nu kunna ansluta till den primära databasen.
Starta 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>
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 den virtuella datorn kan du använda följande kommando för att ta bort resursgruppen, den virtuella datorn och alla relaterade resurser:
az group delete --name myResourceGroup
Nästa steg
Självstudie: Skapa virtuella datorer med hög tillgänglig
Utforska Azure CLI-exempel för distribution av virtuella datorer