Menerapkan Oracle Data Guard pada komputer virtual Azure Linux
Berlaku untuk: ✔️ mesin virtual Linux
Azure CLI digunakan 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 12c dari gambar Azure Marketplace. Artikel ini kemudian menunjukkan kepada Anda, selangkah demi selangkah, cara menginstal dan mengonfigurasi Data Guard pada komputer virtual Azure (VM).
Sebelum memulai, pastikan Azure CLI sudah terinstal. 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 (myVM1) memiliki instans Oracle yang sedang berjalan.
- VM siaga (myVM2) hanya menginstal perangkat lunak Oracle.
Gambar Marketplace yang digunakan untuk membuat VM adalah Oracle:Oracle-Database-Ee:12.1.0.2:latest.
Masuk ke Microsoft Azure
Masuk ke langganan Azure Anda menggunakan perintah az login dan ikuti petunjuk pada layar.
az login
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.
Contoh berikut membuat grup sumber daya bernama myResourceGroup
di lokasi westus
:
az group create --name myResourceGroup --location westus
Buat set ketersediaan
Membuat set ketersediaan bersifat opsional, tetapi kami menyarankannya. Untuk informasi selengkapnya, lihat Pedoman set ketersediaan Azure.
az vm availability-set create \
--resource-group myResourceGroup \
--name myAvailabilitySet \
--platform-fault-domain-count 2 \
--platform-update-domain-count 2
Membuat komputer virtual
Buat VM menggunakan perintah az vm create.
Contoh berikut membuat dua VM bernama myVM1
dan myVM2
. Ini juga membuat kunci SSH, jika belum ada di lokasi kunci default. Untuk menggunakan set tombol tertentu, gunakan opsi --ssh-key-value
.
Buat myVM1 (utama):
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 \
Setelah Anda membuat VM, Azure CLI akan menampilkan informasi yang mirip dengan contoh berikut. Perhatikan nilai publicIpAddress
. Anda menggunakan alamat ini untuk mengakses VM.
{
"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"
}
Membuat myVM2 (siaga):
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 \
Perhatikan nilai publicIpAddress
setelah Anda membuat myVM2.
Buka port TCP untuk konektivitas
Langkah ini mengonfigurasi titik akhir eksternal, yang memungkinkan akses jarak jauh ke database Oracle.
Buka port untuk 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
Hasilnya akan terlihat mirip dengan respons berikut ini:
{
"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": "*"
}
Buka port untuk 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
Sambungkan ke mesin virtual
Gunakan perintah berikut untuk membuat sesi SSH dengan komputer virtual. Ganti alamat IP dengan nilai publicIpAddress
untuk komputer virtual Anda.
$ ssh azureuser@<publicIpAddress>
Membuat database di myVM1 (utama)
Perangkat lunak Oracle sudah diinstal di gambar Marketplace, jadi langkah selanjutnya adalah menginstal database.
Pindah ke superuser Oracle:
$ sudo su - oracle
Buat database:
$ 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
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 variabel ORACLE_SID dan ORACLE_HOME:
$ ORACLE_HOME=/u01/app/oracle/product/12.1.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 login mendatang:
# add oracle home
export ORACLE_HOME=/u01/app/oracle/product/12.1.0/dbhome_1
# add oracle sid
export ORACLE_SID=cdb1
Mengonfigurasi Data Guard
Mengaktifkan mode log arsip di myVM1 (utama)
$ 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 pembuatan log force, dan pastikan ada sedikitnya 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/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;
Aktifkan Kilas Balik (yang membuat pemulihan jauh lebih mudah) dan set STANDBY_FILE_MANAGEMENT ke auto. Exit SQL*Plus setelahnya.
SQL> ALTER DATABASE FLASHBACK ON;
SQL> ALTER SYSTEM SET STANDBY_FILE_MANAGEMENT=AUTO;
SQL> EXIT;
Menyiapkan layanan di myVM1 (utama)
Edit atau buat file tnsnames.ora, yang berada di folder $ORACLE_HOME\network\admin.
Tambahkan entri berikut ini:
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)
)
)
Edit atau buat file listener.ora, yang berada di folder $ORACLE_HOME\network\admin.
Tambahkan entri berikut ini:
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
Aktifkan Data Guard Broker:
$ sqlplus / as sysdba
SQL> ALTER SYSTEM SET dg_broker_start=true;
SQL> EXIT;
Mulai listener:
$ lsnrctl stop
$ lsnrctl start
Menyiapkan layanan di myVM2 (siaga)
SSH ke myVM2:
$ ssh azureuser@<publicIpAddress>
Masuk sebagai Oracle:
$ sudo su - oracle
Edit atau buat file tnsnames.ora, yang berada di folder $ORACLE_HOME\network\admin.
Tambahkan entri berikut ini:
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)
)
)
Edit atau buat file listener.ora, yang berada di folder $ORACLE_HOME\network\admin.
Tambahkan entri berikut ini:
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
Mulai listener:
$ lsnrctl stop
$ lsnrctl start
Mengembalikan database ke myVM2 (siaga)
Buat file parameter file /tmp/initcdb1_stby.ora dengan konten berikut:
*.db_name='cdb1'
Buat folder:
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/12.1.0/dbhome_1/dbs/orapwcdb1 password=OraPasswd1 entries=10
Mulai database di myVM2:
$ export ORACLE_SID=cdb1
$ sqlplus / as sysdba
SQL> STARTUP NOMOUNT PFILE='/tmp/initcdb1_stby.ora';
SQL> EXIT;
Pulihkan database dengan menggunakan alat RMAN:
$ rman TARGET sys/OraPasswd1@cdb1 AUXILIARY sys/OraPasswd1@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;
Anda akan melihat pesan yang mirip dengan berikut ini begitu perintah selesai. Keluar dari RMAN.
media recovery complete, elapsed time: 00:00:00
Finished recover at 29-JUN-17
Finished Duplicate Db at 29-JUN-17
RMAN> EXIT;
Secara opsional, Anda dapat menambahkan ORACLE_HOME dan ORACLE_SID ke file /home/oracle/.bashrc, sehingga pengaturan ini disimpan untuk login mendatang:
# add oracle home
export ORACLE_HOME=/u01/app/oracle/product/12.1.0/dbhome_1
# add oracle sid
export ORACLE_SID=cdb1
Aktifkan Data Guard Broker:
$ sqlplus / as sysdba
SQL> ALTER SYSTEM SET dg_broker_start=true;
SQL> EXIT;
Mengonfigurasi Data Guard Broker di myVM1 (utama)
Mulai Data Guard Manager dan masuk menggunakan SYS dan kata sandi. (Jangan gunakan autentikasi OS.) Lakukan hal berikut:
$ 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.
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 atau buat file tnsnames.ora di komputer klien Anda. File ini biasanya berada di $ORACLE_HOME\network\admin.
Ganti alamat IP dengan nilai publicIpAddress
Anda untuk myVM1 dan 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)
)
)
Mulai 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>
Menguji konfigurasi Data Guard
Berpindah database di myVM1 (utama)
Untuk beralih dari utama ke siaga (cdb1 ke 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>
Sekarang Anda bisa menyambungkan ke database siaga.
Mulai 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>
Berpindah database di myVM2 (siaga)
Untuk berpindah, jalankan hal berikut ini di 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"
Sekali lagi, Anda sekarang dapat tersambung dengan database utama.
Mulai 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>
Anda sudah menyelesaikan instalasi dan konfigurasi Data Guard di Oracle Linux.
Hapus mesin virtual
Saat tidak memerlukan VM lagi, Anda bisa menggunakan perintah berikut untuk menghapus grup sumber daya, VM, dan semua sumber daya terkait:
az group delete --name myResourceGroup
Tidak ada komentar:
Posting Komentar