Menerapkan Oracle Data Guard pada komputer virtual Azure berbasis Linux
Diterapkan ke: ✔️ VM Linux
Anda dapat menggunakan Azure CLI untuk membuat dan mengelola sumber daya Azure dari baris perintah atau dalam skrip. Artikel ini menjelaskan cara menggunakan Azure CLI untuk menyebarkan database Oracle Database 19c Release 3 dari gambar Marketplace Azure. Artikel ini kemudian menunjukkan kepada Anda, selangkah demi selangkah, cara menginstal dan mengonfigurasi Data Guard pada komputer virtual Azure (VM). Untuk membantu mengamankan lingkungan, tidak ada port yang dapat diakses publik dan instans Azure Bastion akan menyediakan akses ke VM Oracle.
Sebelum memulai, pastikan Azure CLI diinstal. Untuk informasi selengkapnya, lihat Panduan penginstalan Azure CLI.
Menyiapkan lingkungan
Asumsi
Untuk menginstal Oracle Data Guard, Anda harus membuat dua Azure VM pada set ketersediaan yang sama:
- VM utama (
OracleVM1
) memiliki instans Oracle yang sedang berjalan. - VM siaga (
OracleVM2
) hanya menginstal perangkat lunak Oracle.
Gambar Marketplace Azure yang Anda gunakan untuk membuat VM adalah Oracle:oracle-database-19-3:oracle-database-19-0904:latest
.
Catatan
Waspadai versi yang telah mencapai akhir masa pakai (EOL) dan tidak lagi didukung oleh Red Hat. Gambar yang diunggah yang berada di atau di luar EOL akan didukung berdasarkan upaya bisnis yang wajar. Untuk informasi selengkapnya, lihat halaman web Red Hat untuk siklus hidup produk.
Masuk ke Microsoft Azure
Masuk ke langganan Azure Anda menggunakan perintah az login dan ikuti petunjuk pada layar.
az login
Atur variabel lingkungan
Sesuaikan LOCATION
variabel untuk lingkungan Anda:
LOCATION=eastus
RESOURCE_GROUP="Oracle-Lab"
VM_USERNAME="azureuser"
VM_PASSWORD="OracleLab123"
VNET_NAME="${RESOURCE_GROUP}VNet"
Mengaktifkan ekstensi Azure Bastion
Sertakan ekstensi Azure Bastion di Azure CLI:
az extension add \
--name bastion
Membuat grup sumber daya
Buat grup sumber daya menggunakan perintah az group create. Grup sumber daya Azure adalah kontainer logis yang disebarkan dan dikelola sumber daya Azure.
az group create \
--name $RESOURCE_GROUP \
--location $LOCATION
Membuat jaringan virtual dengan dua subnet
Buat jaringan virtual tempat Anda akan menyambungkan semua layanan komputasi. Satu subnet akan menghosting Azure Bastion, layanan Azure yang membantu melindungi database Anda dari akses publik. Subnet kedua akan menghosting dua VM database Oracle.
Selain itu, buat grup keamanan jaringan yang akan direferensikan semua layanan untuk menentukan port apa yang diekspos secara publik. Hanya port 443 yang akan diekspos. Layanan Azure Bastion akan membuka port ini secara otomatis saat Anda membuat instans layanan tersebut.
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
Buat set ketersediaan
Membuat set ketersediaan bersifat opsional, tetapi kami menyarankannya. Untuk informasi selengkapnya, lihat panduan untuk set ketersediaan Azure.
az vm availability-set create \
--resource-group $RESOURCE_GROUP \
--name OracleVMAvailabilitySet \
--platform-fault-domain-count 2 \
--platform-update-domain-count 2
Membuat dua komputer virtual
Buat dua VM dengan menggunakan perintah az vm create . Contoh berikut membuat VM bernama OracleVM1
dan OracleVM2
.
Buat OracleVM1
(primer):
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
Buat OracleVM2
(siaga):
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
Membuat instans layanan Azure Bastion
Azure Bastion menyediakan terowongan aman untuk semua layanan yang dihosting dalam jaringan virtual. Ini berfungsi sebagai jump box untuk menghilangkan akses langsung ke database Oracle Anda.
Buat alamat IP publik untuk mengakses layanan Azure Bastion:
az network public-ip create \
--resource-group $RESOURCE_GROUP \
--name OracleLabBastionPublicIP \
--sku Standard
Buat instans layanan Azure Bastion:
az network bastion create \
--location $LOCATION \
--name OracleLabBastion \
--public-ip-address OracleLabBastionPublicIP \
--resource-group $RESOURCE_GROUP \
--vnet-name $VNET_NAME \
--sku basic
Menyambungkan ke komputer virtual
Sekarang, Anda akan mengakses OracleVM1
dengan menggunakan layanan Azure Bastion dari portal Azure.
Di kotak pencarian di bagian atas jendela, masukkan OracleVM1. Dalam daftar hasil, pilih OracleVM1 untuk membuka VM tersebut.
Di bagian atas panel, pilih Sambungkan>Bastion.
Masukkan nama pengguna dan kata sandi, lalu pilih tombol Sambungkan .
Tab baru terbuka dengan koneksi aman ke komputer virtual Anda, di mana perangkat lunak Oracle sudah diinstal dari gambar Marketplace Azure.
Mengonfigurasi OracleVM1 (utama)
Nonaktifkan firewall:
sudo systemctl stop firewalld
sudo systemctl disable firewalld
Atur oracle
kata sandi pengguna:
sudo passwd oracle
Masukkan azureuser
kata sandi: OracleLab123
.
Ubah kata sandi pengguna menjadi oracle
OracleLab123
. (Masukkan lagi untuk memverifikasi.)
Membuat database di OracleVM1 (utama)
Perangkat lunak Oracle sudah diinstal pada gambar Marketplace Azure, jadi langkah selanjutnya adalah menginstal database.
Pindah ke superuser Oracle:
sudo su - oracle
Buat 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
Outputnya akan terlihat mirip dengan respons berikut ini:
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.
Atur ORACLE_SID
variabel dan ORACLE_HOME
:
$ ORACLE_HOME=/u01/app/oracle/product/19.0.0/dbhome_1; export ORACLE_HOME
$ ORACLE_SID=cdb1; export ORACLE_SID
Secara opsional, Anda dapat menambahkan ORACLE_HOME
dan ORACLE_SID
ke file /home/oracle/.bashrc , sehingga pengaturan ini disimpan untuk masuk di masa mendatang:
# add oracle home
export ORACLE_HOME= /u01/app/oracle/product/19.0.0/dbhome_1
# add oracle sid
export ORACLE_SID=cdb1
Mengonfigurasi Data Guard
Mengaktifkan mode log arsip di myVM1 (utama)
Aktifkan mode log:
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;
Aktifkan pengelogan paksa, dan pastikan bahwa setidaknya ada satu file log:
SQL> ALTER DATABASE FORCE LOGGING;
SQL> ALTER SYSTEM SWITCH LOGFILE;
Buat log ulang siaga, yang mengatur ukuran dan jumlah yang sama dengan log ulang database utama:
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;
Aktifkan Flashback (yang membuat pemulihan jauh lebih mudah) dan atur STANDBY_FILE_MANAGEMENT
ke AUTO
. Keluar dari SQL*Plus setelah itu.
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;
Menyiapkan layanan di OracleVM1 (utama)
Edit atau buat file tnsnames.ora , yang ada di folder $ORACLE_HOME/network/admin .
Tambahkan entri berikut ini:
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)
)
)
Edit atau buat file listener.ora , yang ada di folder $ORACLE_HOME/network/admin .
Tambahkan entri berikut ini:
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
Aktifkan Data Guard Broker:
sqlplus / as sysdba
SQL> ALTER SYSTEM SET dg_broker_start=true;
SQL> CREATE pfile FROM spfile;
SQL> EXIT;
Salin file parameter ke server siaga:
scp -p $ORACLE_HOME/dbs/initcdb1.ora oracle@OracleVM2:$ORACLE_HOME/dbs/
Mulai listener:
lsnrctl stop
lsnrctl start
Menyiapkan layanan di OracleVM2 (siaga)
Kembali ke portal Microsoft Azure. Cari OracleVM2, lalu pilih sumber daya dalam daftar hasil.
Di bagian atas panel, pilih Sambungkan>Bastion.
Masukkan nama pengguna dan kata sandi, lalu pilih tombol Sambungkan .
Nonaktifkan firewall pada OracleVM2 (siaga)
sudo systemctl stop firewalld
sudo systemctl disable firewalld
Mengonfigurasi lingkungan untuk OracleVM1
Atur oracle
kata sandi pengguna:
sudo passwd oracle
Masukkan azureuser
kata sandi: OracleLab123
.
oracle
Ubah kata sandi pengguna menjadi OracleLab123
. (Masukkan lagi untuk memverifikasi.)
Beralih ke oracle
superuser:
$ sudo su – oracle
Atur ORACLE_SID
variabel dan ORACLE_HOME
:
ORACLE_HOME=/u01/app/oracle/product/19.0.0/dbhome_1; export ORACLE_HOME
ORACLE_SID=cdb1; export ORACLE_SID
Secara opsional, Anda dapat menambahkan ORACLE_HOME
dan ORACLE_SID
ke file /home/oracle/.bashrc , sehingga pengaturan ini disimpan untuk masuk di masa mendatang:
# add oracle home
export ORACLE_HOME=/u01/app/oracle/product/19.0.0/dbhome_1
# add oracle sid
export ORACLE_SID=cdb1
Edit atau buat file tnsnames.ora , yang ada di folder $ORACLE_HOME/network/admin .
Tambahkan entri berikut ini:
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)
)
)
Edit atau buat file listener.ora , yang ada di folder $ORACLE_HOME/network/admin .
Tambahkan entri berikut ini:
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
Mulai listener:
lsnrctl stop
lsnrctl start
Memulihkan database ke OracleVM2 (siaga)
Buat file parameter /tmp/initcdb1_stby.ora dengan konten berikut:
*.db_name='cdb1'
Buat folder:
$ 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
Buat file kata sandi:
$ orapwd file=/u01/app/oracle/product/19.0.0/dbhome_1/dbs/orapwcdb1 password=OracleLab123 entries=10 force=y
Mulai database pada OracleVM2
:
export ORACLE_SID=cdb1
sqlplus / as sysdba
SQL> CREATE spfile from pfile;
SQL> STARTUP NOMOUNT PFILE='/tmp/initcdb1_stby.ora';
SQL> EXIT;
Pulihkan database dengan menggunakan alat Oracle Recovery Manager (RMAN):
$ rman TARGET sys/OracleLab123@cdb1 AUXILIARY sys/OracleLab123@cdb1_stby
Jalankan perintah berikut di RMAN:
DUPLICATE TARGET DATABASE
FOR STANDBY
FROM ACTIVE DATABASE
DORECOVER
SPFILE
SET db_unique_name='CDB1_STBY' COMMENT 'Is standby'
NOFILENAMECHECK;
Pesan yang mirip dengan pesan berikut muncul saat perintah selesai:
media recovery complete, elapsed time: 00:00:00
Finished recover at 29-JUN-22
Finished Duplicate Db at 29-JUN-22
Keluar dari RMAN:
RMAN> EXIT;
Aktifkan Data Guard Broker:
sqlplus / as sysdba
SQL> ALTER SYSTEM SET dg_broker_start=true;
SQL> EXIT;
Mengonfigurasi Data Guard Broker di OracleVM1 (primer)
Mulai Data Guard Manager dan masuk menggunakan SYS dan kata sandi. (Jangan gunakan autentikasi OS.)
$ 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.
Tinjau konfigurasi:
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)
Anda sudah menyelesaikan penyiapan Oracle Data Guard. Bagian berikutnya akan menunjukkan cara menguji konektivitas dan berpindah.
Menyambungkan database dari komputer klien
Perbarui file tnsnames.ora di komputer klien Anda. File ini biasanya dalam $ORACLE_HOME/jaringan/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)
)
)
Mulai 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>
Menguji konfigurasi Data Guard
Mengalihkan database di OracleVM1 (utama)
Beralih dari primer ke siaga (cdb1
ke 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>
Sekarang Anda bisa menyambungkan ke database siaga. Mulai 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>
Beralih database di OracleVM2 (siaga)
Untuk beralih, jalankan kode berikut pada 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"
Sekali lagi, Anda sekarang dapat tersambung dengan database utama. Mulai 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>
Anda sudah menyelesaikan instalasi dan konfigurasi Data Guard di Oracle Linux.
Hapus mesin virtual
Saat Anda tidak lagi memerlukan VM, Anda dapat menggunakan perintah berikut untuk menghapus grup sumber daya, VM, dan semua sumber daya terkait:
az group delete --name $RESOURCE_GROUP