Cài đặt Oracle Data guard sử dụng Oracle Enterprise Manager cloud control OEM

Oracle Data Guard là một tính năng của hệ thống quản lý cơ sở dữ liệu Oracle Database, được thiết kế để đảm bảo sự sẵn sàng và bảo vệ dữ liệu trong môi trường cơ sở dữ liệu Oracle. Data Guard cung cấp các giải pháp cho việc sao lưu, phục hồi, và chuyển đổi giữa các máy chủ chính (primary) và máy chủ sao lưu (standby)

Cài đặt Oracle Data guard sử dụng Oracle Enterprise Manager cloud control OEM

Có các loại Standby database như sau:

Physical Standby Databases

Standby is identical copy of primary database

• Redo changes

  • transported from primary to standby
  • applied on standby (Redo Apply)

• Can switch operations to standby

  • Planned (switchover / switchback)
  • Unplanned (failover)

Logical Standby Databases

• Redo copied from primary to standby

• Changes converted into logical change records (LCR)

• Logical change records applied on standby (SQL Apply)

• Standby database can be opened for updates

  • Can modify propagated objects
  • Can create new indexes for propagated objects

• May need larger system for logical standby

  • LCR apply can be less efficient than redo apply
  • Array updates on primary become single row updates on standby

Snapshot Standby Databases

A snapshot standby database is a type of updatable standby database that provides full data protection for a primary database. A snapshot standby database receives and archives, but does not apply, redo data from its primary database. Redo data received from the primary database is applied when a snapshot standby database is converted back into a physical standby database, after discarding all local updates to the snapshot standby database.

Các chế độ bảo vệ dữ liệu:

word image 2643 1

Download bộ cài Oracle tương ứng tại:

https://edelivery.oracle.com/osdc/faces/SoftwareDelivery

Mục tiêu: Máy chủ nguồn source và máy chủ đích (dự phòng) target

ItemsDB HN – primaryDB HCM – standby
hostnamehn.localdomainhcm.localdomain
ip192.168.68.11192.168.68.12
db nameoradboradb
instance_nameoradboradb
db_unique_nameoradboradbs
version DB19.319.3
DB_HOME/u01/app/oracle/product/

19.3.0/dbhome_1

/u01/app/oracle/product/

19.3.0/dbhome_1

DB_BASE/u01/app/oracle/u01/app/oracle
Chi tiếtđã cài đặt oracle database software + khởi tạo database oradbchỉ cài đặt oracle database software

OEM server:

  • ip: 192.168.68.10
  • hostname: oem.localdomain
  • Failover: chuyển đổi dự phòng tự động khi mà primary gặp sự cố không thể khôi phục
  • Switchover: chuyển đổi chủ động

Máy chủ ở HN là máy chủ primary, HCM là standby database

Chúng ta chuẩn bị 03 server như sau:

S01: server primary ở HN, cài đặt oracle linux và oracle database, đã tạo database rồi

Xem chi tiết cài đặt ở đây: https://datalinks.vn/cai-dat-oracle-database-19c-tren-linux-install-oracle-database-19c-on-linux/

Cài đặt Oracle database 19c trên Linux | Install oracle database 19c on Linux

S2: các bạn cài đặt oracle database software only:

Xem chi tiết ở đây: https://datalinks.vn/cai-dat-oracle-database-19c-tren-linux-install-oracle-database-19c-on-linux/

Cài đặt Oracle database 19c trên Linux | Install oracle database 19c on Linux

S03: là server OEM đã cài đặt database oracle và OEM rồi => xem ở đây để cài đặt chi tiết: 

Hướng dẫn cài đặt Oracle Enterprise Manager Enterprise Manager OEM 13c

TIẾP THEO

Đặt lại hostname cho các node:

## kiểm tra thông tin
hostname

## nếu thông tin chưa đúng thì thực hiện lệnh bên dưới đây để đổi hostname nhé, nếu đúng rồi thì bỏ qua bước này
##HN
hostnamectl set-hostname hn.localdomain

##HCM
hostnamectl set-hostname hcm.localdomain

##OEM
hostnamectl set-hostname oem.localdomain

Chỉnh sửa file /etc/hosts trên cả 03 server, thêm vào cuối file hiện tại: thực hiện bằng user root

su -
vi /etc/hosts
192.168.68.11 hn.localdomain hn
192.168.68.12 hcm.localdomain hcm
192.168.68.10 oem.localdomain oem

Trên Primary- HN

1. Create Primary Database

2. Setup Primary Database in ARCHIVELOG mode

3. Enable FORCE LOGGING

5. Set DB_UNIQUE_NAME

Bật chế độ archivelog và force logging cho CSDL: user oracle

su oracle
cd
. .bash_profile

sqlplus / as sysdba
startup mount
select name,log_mode,force_logging from v$database;
alter database archivelog;
alter database open;
alter system switch logfile;
alter database force logging;
select name,db_unique_name, log_mode,force_logging from v$database;

kiểm tra name, instance name, db unique name, service name của DB

show parameter name

unlock user dbsnmp

alter user dbsnmp account unlock;
alter user dbsnmp identified by oracle;

Khởi động lại DB và OS để hệ thống apply thông tin mới

sqlplus / as sysdba
shut immediate;
exit

OS:
reboot

word image 2643 2

Trên cả 2 server HN và HCM:

tạo thư mục để phục vụ add host agent vào trong OEM, bằng user oracle

su oracle
cd
. .bash_profile
mkdir -p /u01/app/oracle/oemagent
cd $ORACLE_HOME/network/admin
ls -l

Tạo listener và tnsnames trên cả 3 server => các bạn tự tạo theo thông tin bên dưới hoặc có thể sử dụng netca để tạo cho nhanh, sử dụng user oracle

su oracle
cd
. .bash_profile
netca

hoặc sử dụng thông tin bên dưới copy vào file listener và tnsnames

listener trên primary:

vi $ORACLE_HOME/network/admin/listener.ora

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = hn)(PORT = 1521))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
  )

listener trên standby:

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = hcm)(PORT = 1521))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
  )

listener trên OEM:

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = oem)(PORT = 1521))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
  )

TNSnames.ora cho cả 3 host:

vi $ORACLE_HOME/network/admin/tnsnames.ora

# tnsnames.ora Network Configuration File: /u01/app/oracle/product/19.3.0/dbhome_1/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.

HN =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = hn.localdomain)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = oradb.localdomain)
    )
  )

HCM =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = hcm.localdomain)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = hcm.localdomain)
    )
  )

OEM =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = oem.localdomain)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = duodb.localdomain)
    )
  )

Bật listener trên cả 3 DB

lsnrctl start
lsnrctl status

Trên cả 3 host: thực hiện bằng user root

su -
cd

Disable firewalld:

systemctl stop firewalld.service
systemctl disable firewalld.service

Disable dịch vụ selinux:

vi /etc/selinux/config
## tìm dòng bên dưới và sửa thành disabled

SELINUX=disabled

Tiến hành ping kiểm tra kết nối giữa 3 host:

su oracle
cd
. .bash_profile

ping hn -c 5
ping hcm -c 5
ping oem -c 5
tnsping hn
tnsping hcm
tnsping oem

Bật DB trên DB node 1 primary HN:

su oracle
cd
. .bash_profile

sqlplus / as sysdba
startup

Trên server OEM startup database và OMS lên:

su oracle
cd
. .bash_profile

sqlplus / as sysdba
startup
exit

Tiến hành khởi động OMS:

/u01/app/oracle/oem/bin/emctl start oms

– khi startup oms thì các agent sẽ tự động khởi động => login vào như sau

 

Cài đặt OEM Agent vào host HN, HCM

Trên giao diện web OEM thực hiên như sau:

Setup/ Add Target / Add target manually

word image 2643 1 1

Chọn Install Agent on Host

word image 2643 2 1

Add Manually

word image 2643 3 1

Nhập thông tin hostname của 2 host mà chúng ta cần add vào oem như bên dưới, chọn Platform là giống nhau cho cả 2 host nhé Linux x86_64

  • hn.localdomain
  • hcm.localdomain

word image 2643 4 1

Nhập vào thông tin như sau:

Installation Base Directory: /u01/app/oracle/oemagent

Instance Directory: nhấn TAB thì tự động điền

Click vào dấu + để tạo credential cho Named và Root như thông tin hình bên dưới

  • user oracle, mk oracle
  • user root, mk oracle

và đặt tên tương ứng từng role credential cho dễ nhớ để sử dụng về sau

word image 2643 5 1

tương tự đối với root credential:

word image 2643 6 1

kiểm tra lại thông tin rồi Next

word image 2643 7

kiểm tra lại thông tin rồi nhấn Deploy Agent

word image 2643 8

hệ thống sẽ check thông tin và tiến hành Deploy agent

word image 2643 9

hệ thống thông báo thành công => chúng ta nhấn Done

word image 2643 10

Tiếp theo chúng ta sẽ add database instance của HN vào OEM

Setup/ Add target / Add targets Manually

word image 2643 11

Vào Add using Guided Process

word image 2643 12

Chọn oracle database, listener….Add

word image 2643 13

Chọn tìm kiếm trong ô

word image 2643 14

Chọn node là hn.localdomain => select

word image 2643 15

Next

word image 2643 16

kiểm tra thông tin và sửa lại cho đúng

ở đây chúng ta có thể sử dụng user sys với quyền sysdba cũng được nhé, trong hình là đang sử dụng user dbsnmp

Nhấn Configure để đặt lại các tham số cho đúng với thông tin hiện tại

word image 2643 17

Nhập vào thông tin hiện tại của node HN như bên dưới

  • Target name: tên của instance hiển thị trên oem
  • target type: database instance
  • database system: user hệ thống sử dụng database trên OS
  • Listener machine: tên hostname của máy HN, lưu ý nhập cho đúng nhé

word image 2643 18

Nhấn tiếp Configure ở chỗ Listener để chỉnh sửa thông tin của listener:

add listener

Nhấn test connection:

word image 2643 19 1024x874 1

OK để hoàn thành

word image 2643 20

Next để tiếp tục ra màn hình này nhấn SAVE để lưu lại thông in

word image 2643 21

word image 2643 22

Tương tự như vậy chúng ta add listener của node HCM vào oem, vì HCM chưa có database nên chỉ add listener vào trước mà thôi

word image 2643 23

word image 2643 24

word image 2643 25

word image 2643 26

chọn hcm.localdomain

word image 2643 27

word image 2643 28

tới đây chúng ta xem lại thông tin thì nó đang bị sai so với thiết kế ban đầu của chúng ta => chúng ta sẽ sửa lại thông tin như sau:

Vì node HCM chỉ mới cài đặt database software nên chưa có database instance nên chúng ta chỉ có thể add listener vào oem thôi là được nhé

click chọn listener vào ô vuông xanh => configure => nhập lại thông tin cho đúng theo như bên dưới (machine name) sau đó lưu lại thông tin

Anh em chú ý đoạn này làm đúng thông tin ko là nhầm nhé

word image 2643 29

Nhấn Next để tiếp tục

word image 2643 30

Save để lưu lại thông tin

word image 2643 31

word image 2643 32

như vậy là chúng ta đã hoàn thiện add database instance + listener của HN, listener của HCM vào trong OEM

 

TIẾP THEO CHÚNG TA SẼ TẠO DATA GUARD CHO HN TRÊN HCM

word image 2643 33

danh sách liệt kê ra các database instance đã được add vào hệ thống => chúng ta chọn thông tin của oradb.localdomain

word image 2643 34

chúng ta thấy là Data guard chưa được cấu hình cho HN ở đây

word image 2643 35

Chúng ta vào cấu hình data guard cho HN

word image 2643 36

nhập vào thông tin login vào database HN, sử dụng user sys và sysdba cho toàn quyền

word image 2643 37

chọn thông tin add sau đó Continue

word image 2643 38

chọn online backup sau đó Next (bước này sẽ thực hiện duplicate online nên anh em đảm bảo đường mạng nhé)

word image 2643 39

xem lại các thông tin này chuẩn chưa rồi next

word image 2643 40

Xem lại thông tin tạo standby ở bên dưới, chú ý nếu thông tin không đúng thì chúng ta tiến hành sửa lại thông tin, click vào icon search để thay hostname nếu bị sai:

word image 2643 41

Kiểm tra các thông tin và xác nhận sau đó Next

word image 2643 42

sửa lại thông tin unique_name oradbs là của standby, check vào use SYSDBA monitoring… như bên dưới

word image 2643 43

review lại các thông tin rồi Finish để tiến hành tạo data guard

word image 2643 44

hệ thống tạo job để thực hiện

word image 2643 45

vào View job để xem thông tin tiến trình đang chạy

word image 2643 46

thông báo thực hiện thành công

word image 2643 47

Check thông tin database:

xem thông tin host

targets/hosts

word image 2643 48

xem thông tin database

targets/databases

ở đây chúng ta sẽ có 2 database: 1 là database của node HN chúng ta đã add vào từ trước có tên là oradb.localdomain, 2 là database của HCM chính là data guard mà chúng ta đã khởi dựng từ node HN trong oem và có tên là oradbs

word image 2643 49

Chúng ta xem database nào thì click vào nó nhé, ở đây tôi check thông tin node HN trước

word image 2643 50

Xem thông tin data guard performance

word image 2643 51 1

xem thông tin data guard administration

word image 2643 52

TEST DỊCH VỤ

Mở Mobaxterm lên thực hiện SSH vào server

login vào HN kiểm tra trạng thái của database

su oracle
cd
. .bash_profile

sqlplus / as sysdba
select name, open_mode from v$database;

word image 2643 53

login vào HCM kiểm tra trạng thái của database:

su oracle
cd
. .bash_profile

sqlplus / as sysdba
select name, open_mode from v$database;

word image 2643 54

=> như vậy là khi data guard đang chạy => primary sẽ là read write còn standby sẽ là mounted, đây là mặc định sau khi dựng hệ thống data guard thành công.

Thêm data vào HN:

Tên HN thực hiện tạo tablespace, user, tabe => sau đó insert data vào để làm dữ liệu test hệ thống:

sqlplus / as sysdba

create tablespace DUONG datafile size 100m autoextend on next 10m maxsize unlimited;

alter tablespace DUONG add datafile size 100m autoextend on next 10m maxsize unlimited;

create user duo identified by oracle default tablespace DUONG temporary tablespace TEMP quota unlimited on DUONG;

create table duo.tab (id number, data varchar(100));
alter table duo.tab add primary key (id);
select count(*) from duo.tab;

Thực hiện insert data vào bảng

insert into duo.tab values (1,'duo nguyen 1');
insert into duo.tab values (2,'duo nguyen 2');
insert into duo.tab values (3,'duo nguyen 3');
commit;

check data:

set lines 999;
select * from duo.tab;
select count(*) from duo.tab;

word image 2643 55

Thực hiện insert thêm data vào bảng:

insert into duo.tab values (4,'duo nguyen 4');
insert into duo.tab values (6,'duo nguyen 6');
insert into duo.tab values (7,'duo nguyen 7');
insert into duo.tab values (8,'duo nguyen 888');
insert into duo.tab values (9,'duo nguyen 999');
insert into duo.tab values (10,'duo nguyen 101010');
insert into duo.tab values (11,'duo nguyen 11111');
insert into duo.tab values (12,'duo nguyen 12');
insert into duo.tab values (13,'duo nguyen 13');
commit;

Kiểm tra thông tin của HN và HCM:

select name, db_unique_name, database_role, switchover_status, open_mode from v$database;

word image 2643 56

word image 2643 57

Chúng ta chuyển node HCM đang ở MOUNTED thành READ ONLY để có thể truy vấn thông tin, còn trong mounted thì chúng ta không xem được thông tin:

kiểm tra trạng thái hiện tại:

select open_mode, status,instance_name,database_role from v$instance,v$database;

select max(sequence#) from v$archived_log;

Standby- HCM: check status, sau đó huỷ tiến trình đồng bộ redo log MRP, Open database:

select process,status,sequence# from v$managed_standby;

alter database recover managed standby database cancel;

alter database open;

select status,instance_name,database_role,open_mode from v$database,v$instance;

Standby – HCM: thực hiện ACTIVE tiến trình MRP để hệ thống đồng bộ redo log từ Primary:

alter database recover managed standby database disconnect from session;

select process,status,sequence# from v$managed_standby;

select open_mode, status,instance_name,database_role from v$instance,v$database;

kiểm tra lại trạng thái hiện tại => đã chuyển thành read only

select open_mode, status,instance_name,database_role from v$instance,v$database;

select max(sequence#) from v$archived_log;

Kiểm tra thông tin bên HCM standby trên OEM

Targets/databases => chọn database oradbs

sau đó thực hiện như sau để xem thông tin tablespace (nếu chúng ta ko open read only database thì sẽ không xem được thông tin này)

word image 2643 58

Đã có tablespace DUONG chính là tablespace chúng ta đã tạo ở bên trên trong node HN primary => nó đã được đồng bộ sang HCM standby rồi đó các bạn

word image 2643 59

Vào Schema kiểm tra user thì đã có thông tin rồi. user DUO chúng ta tạo ở bên trên

word image 2643 60

Vào table kiểm tra thì có thông tin table đã tạo ở HN primary đã được đồng bộ sang HCM standby, đó chính là table TAB, thuộc user DUO, nằm trong tablespace DUONG

word image 2643 61

Xem nội dung của table đã có rồi nhé:

word image 2643 62

=> Như vậy nghĩa là standby đã hoạt động => data từ bên HN primary đã được đồng bộ sang HCM standby

Chúng ta thêm data vào table bên HN primary xem bên HCM standby thay đổi thế nào?

Thực hiện trong Mobaxterm ssh nhé:

insert into duo.tab values (14,'duo nguyen 14');
insert into duo.tab values (15,'duo nguyen 15');
commit;

Xem thông tin thì ngay lập tức dữ liệu được đồng bộ sang HCM standby:

word image 2643 63

THỰC HIỆN THỦ TỤC SWICHOVER, FAILOVER PRIM <=> STAND VÀ NGƯỢC LẠI:

SWICHOVER: là trường hợp chúng ta chuyển máy chủ HN hiện tại là primary thành standby và HCM hiện tại sẽ thành primary

FAILOVER: là trường hợp máy chủ HN gặp sự cố không thể khôi phục thì hệ thống sẽ thực hiện chuyển HCM standby thành Primary và hoạt động bình thường => sau đó DBA dựng lại hệ thống data guard mới, trong đó HCM giờ đây giữa vai trò là primary

Thực hiện:

vào targets/databases chọn máy Primary

word image 2643 64

trong cửa sổ hiện ra ta chọn Availability/Data guard administration/ Switchover

word image 2643 65

hệ thống hỏi xác nhận thông tin: => Countinue

word image 2643 66

word image 2643 67

Xác nhận thông tin rồi YES

word image 2643 68

hệ thống bắt đầu tiến hành thực hiện lệnh

word image 2643 69

hệ thống thông báo thực hiện switchover thành công

word image 2643 70

Role của database đã thay đổi:

word image 2643 71

Chúng ta kiểm tra xem HN và HCM hiện tại đang ở open_mode nào:

sqlplus / as sysdba

select open_mode, status,instance_name,database_role from v$instance,v$database;

word image 2643 72

word image 2643 73

Thực hiện insert data trên HCM primary rồi check thông tin apply bên HN standby:

insert into duo.tab values (16,'duo nguyen 16');
insert into duo.tab values (17,'duo nguyen 17');
commit;

word image 2643 74

đã có data trên HN standby hiện tại

word image 2643 75

Thực hiện Switchback trở lại thì thế nào?

HCM hiện tại là primary sẽ quay về thành standby và ngược lại HN là standby sẽ thành Primary như ban đầu:

Targets/databases/oradbs và thực hiện theo hướng dẫn bên dưới

word image 2643 76 1

Availability/ Data guard adminstration/ switchover

word image 2643 77

Continue

word image 2643 78

continue

word image 2643 79

Chọn thông tin như hình và YES

word image 2643 80

hệ thống bắt đầu thực hiện chuyển đổi

word image 2643 81

hệ thống thực hiên switchover thành công

word image 2643 82

Kiểm tra thông tin sau khi switchover, switch back

sqlplus / as sysdba

select open_mode, status,instance_name,database_role from v$instance,v$database;

word image 2643 83

word image 2643 84

word image 2643 85

Vậy là chúng ta đã thực hiện thành công bài thực hành này.

Chúc anh em thực hiện tốt bài thực hành này nhé.

Datalinks.vn

Hello các bạn, mình là Dương Nguyễn tác giả của blog này. Với gần 20 năm làm việc trong lĩnh vực CNTT, VT trong và ngoài nước, mong muốn được chia sẻ kiến thức và kinh nghiệm về database với các bạn đam mê và quan tâm đến lĩnh vực này. Đặc biệt là #OracleDatabase hoặc luyện thi #OCP database admin. Các bạn cần người đồng hành thì alo mình nhé. Call/Zalo: 0765 871 888. Thanks you !.....
5 1 đánh giá
Đánh giá bài viết
Theo dõi
Thông báo của
guest

0 Góp ý
Phản hồi nội tuyến
Xem tất cả bình luận