Kamis, 09 Juni 2022

ORACLE GUARD-install

 

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.

Azure CLI
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:

Azure CLI
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.

Azure CLI
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):

Azure CLI
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.

Output
{
  "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):

Azure CLI
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:

Azure CLI
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:

Output
{
  "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:

Azure CLI
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.

Bash
$ 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:

Bash
$ sudo su - oracle

Buat database:

Bash
$ 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:

Output
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:

Bash
$ 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:

Bash
# 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)

Bash
$ 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:

Bash
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:

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

Bash
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:

Bash
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:

Bash
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:

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

Mulai listener:

Bash
$ lsnrctl stop
$ lsnrctl start

Menyiapkan layanan di myVM2 (siaga)

SSH ke myVM2:

Bash
$ ssh azureuser@<publicIpAddress>

Masuk sebagai Oracle:

Bash
$ sudo su - oracle

Edit atau buat file tnsnames.ora, yang berada di folder $ORACLE_HOME\network\admin.

Tambahkan entri berikut ini:

Bash
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:

Bash
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:

Bash
$ lsnrctl stop
$ lsnrctl start

Mengembalikan database ke myVM2 (siaga)

Buat file parameter file /tmp/initcdb1_stby.ora dengan konten berikut:

Bash
*.db_name='cdb1'

Buat folder:

Bash
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:

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

Mulai database di myVM2:

Bash
$ export ORACLE_SID=cdb1
$ sqlplus / as sysdba

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

Pulihkan database dengan menggunakan alat RMAN:

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

Jalankan perintah berikut di RMAN:

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

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

Secara opsional, Anda dapat menambahkan ORACLE_HOME dan ORACLE_SID ke file /home/oracle/.bashrc, sehingga pengaturan ini disimpan untuk login mendatang:

Bash
# 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:

Bash
$ 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:

Bash
$ 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:

Bash
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:

Bash
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:

Bash
$ 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):

Bash
$ 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:

Bash

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

Bash
$ 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:

Bash

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

Azure CLI
az group delete --name myResourceGroup

Langkah berikutnya

Tidak ada komentar:

Posting Komentar