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.

Diagram memperlihatkan kotak pencarian dan hasil untuk Oracle VM pertama.

Di bagian atas panel, pilih Sambungkan>Bastion.

Diagram memperlihatkan pilihan untuk menyambungkan melalui Azure Bastion.

Masukkan nama pengguna dan kata sandi, lalu pilih tombol Sambungkan .

Diagram memperlihatkan cara memasukkan kredensial untuk menyambungkan melalui Azure Bastion.

Tab baru terbuka dengan koneksi aman ke komputer virtual Anda, di mana perangkat lunak Oracle sudah diinstal dari gambar Marketplace Azure.

Diagram memperlihatkan koneksi melalui Azure Bastion di browser.

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 oracleOracleLab123. (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.

Cuplikan layar kotak pencarian dan hasil untuk VM Oracle kedua.

Di bagian atas panel, pilih Sambungkan>Bastion.

Diagram memperlihatkan pilihan untuk menyambungkan melalui Azure Bastion.

Masukkan nama pengguna dan kata sandi, lalu pilih tombol Sambungkan .

Cuplikan layar memasukkan kredensial nama pengguna dan kata sandi untuk disambungkan melalui Azure Bastion.

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

Langkah berikutnya