Hướng dẫn cài đặt Oracle data guard Physical standby Ver 19c với RMAN

Dưới đây là hướng dẫn chi tiết quá trình dựng node Oracle data guard Physical standby Ver 19c với RMAN

THÔNG TIN CHI TIẾT 2 NODE:

ItemsPrimary – SRV1Standby – SRV2
hostnamesrv1srv2
ip192.168.1.11192.168.1.12
db nameduodbduodb
instance_nameduodbduodb
db_unique_nameduodbstand
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
global database namesrv1.localdomainsrv2.localdomain

do oracle data guard

SRV1 – là server tôi đặt là Primary

SRV2 – là server tôi đặt là Standby

Chúng ta tạo Data Guard dạng Physical Standby nghĩa là nó sẽ apply Redolog sang Standby từ Primary.

Prim: cài đặt hoàn thiện phần mềm và khởi tạo CSDL oracle database 19c, tên CSDL là duodb

Stand: chỉ cài đặt oracle Software và không tạo DB (chúng ta sẽ clone nó từ Prim)

Đặt tên hostname cho 2 node:

trên SRV1:
hostnamectl set-hostname srv1.localdomain

trên SRV2:
hostnamectl set-hostname srv2.localdomain

Trên cả 2 SRV:

Thêm vào cuối file hosts theo thông tin bên dưới:

vi /etc/hosts

192.168.1.11 srv1.localdomain srv1
192.168.1.12 srv2.localdomain srv2

SERVER PRIM SRV1:

Kiểm tra và bật chế độ Archivelog:

su oracle
cd
. .bash_profile
sqlplus / as sysdba
startup
alter system set log_archive_dest_1 = 'LOCATION=USE_DB_RECOVERY_FILE_DEST' scope=both;
select log_mode from v$database;
archive log list;

Nếu chưa bật thì Off database đi khởi động ở mount và bật lên:

shutdown immediate
startup mount
alter database archivelog;
alter database open;

Kiểm tra và bật chế độ Force Logging:

select force_logging from v$database;
alter database force logging;

Check redo log size:

select group#, thread#, bytes/1024/1024 mb from v$log;
select thread#, instance from v$thread ;

SQL> select group#, thread#, bytes/1024/1024 mb from v$log;

GROUP# THREAD# MB

---------- ---------- ----------

1 1 200

2 1 200

3 1 200

Tạo redo log cho standby node, chúng ta nên tạo standby redo logs giống như primary về kích thước file, số lượng group và log file (ở đây là 200MB và 3 logfile):

alter database add standby logfile thread 1 size 200m;
alter database add standby logfile thread 1 size 200m;
alter database add standby logfile thread 1 size 200m;

Kiểm tra kết quả sau khi tạo:

select group#, thread#, sequence#, bytes/1024/1024 mb, archived, status from v$standby_log;
select member from v$logfile where type = 'STANDBY';

Check db_unique_name:

show parameter db_unique_name

word image 909 2

Set log_archive_config:

alter system set log_archive_config='DG_CONFIG=(DUODB,STAND)' scope=both;

Set log_archive_dest_2:

alter system set log_archive_dest_2='SERVICE=STAND ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=STAND' scope=both;

Set fal_server:

show parameter fal_server ;
alter system set fal_server ='STAND' scope=both;

Set standby_file_management: AUTO

show parameter standby_file_management
alter system set standby_file_management='AUTO' scope=both;

Lấy thông tin đường dẫn: control_files, core_dump_dest, audit_file_dest:

select name, value from v$parameter where upper(value) like upper('%/duodb/%');

word image 909 3

Kiểm tra và Enable flashback:

select flashback_on from v$database;
alter database flashback on;

Check the password file:

exit
ls /u01/app/oracle/product/19.3.0/dbhome_1/dbs/orapw*

word image 909 4

Tắt firewall trên 2 node:

systemctl stop firewalld.service
systemctl disable firewalld.service

Bật đồng bộ thời gian cho 2 node:

systemctl enable chronyd.service
systemctl restart chronyd.service
systemctl status chronyd
chronyc tracking
chronyc sources
chronyc -a 'burst 4/4'
chronyc -a makestep

Update yum:

yum update -y

Add to tnsnames.ora:

vi /u01/app/oracle/product/19.3.0/dbhome_1/network/admin/tnsnames.ora

# Thêm nội dung đoạn này vào file:

# tnsnames.ora Network Configuration File: /u01/app/oracle/product/19.3.0/dbhome_1/network/admin/tnsnames.ora

# Generated by Oracle configuration tools.

DUODB =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = srv1.localdomain)(PORT = 1521))
)

(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = duodb.localdomain)
)
)

STAND =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = srv2.localdomain)(PORT = 1521))
)

(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = stand.localdomain)
)
)

LISTENER_DUODB =
(ADDRESS = (PROTOCOL = TCP)(HOST = srv1.localdomain)(PORT = 1521))

Thêm static listener:

vi /u01/app/oracle/product/19.3.0/dbhome_1/network/admin/listener.ora

# Thêm nội dung đoạn này vào file:

# listener.ora Network Configuration File: /u01/app/oracle/product/19.3.0/dbhome_1/network/admin/listener.ora

# Generated by Oracle configuration tools.

SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = duodb.localdomain)
(ORACLE_HOME = /u01/app/oracle/product/19.3.0/dbhome_1)
(SID_NAME = duodb)
)
)

LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = srv1.localdomain)(PORT = 1521))
)

(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
)

ADR_BASE_LISTENER = /u01/app/oracle

Ghi chú: có thể sử dụng netmgr, netca để tiến hành thiết lập listener và tnsnames cho node.

Tiến hành Reload the listener:

lsnrctl start
lsnrctl status
lsnrctl reload

CẤU HÌNH SERVER STANDBY:

Tắt firewall trên 2 node:

systemctl stop firewalld.service
systemctl disable firewalld.service

Bật đồng bộ thời gian cho 2 node:

systemctl enable chronyd.service
systemctl restart chronyd.service
systemctl status chronyd
chronyc tracking
chronyc sources
chronyc -a 'burst 4/4'
chronyc -a makestep

Update yum:

yum update -y

Tạo thông tin để khởi tạo DB, tên db là giống nhau ở cả 2 db (duodb), thông tin db_unique_name sẽ là khác nhau lần lượt là: DUODB, STAND (server: prim, stand):

Tạo db_name trong file pfile trên server:

Lệnh này sẽ tạo ra pfile tên initstand.ora trong thư mục dbs:

echo 'DB_NAME=DUODB' > $ORACLE_HOME/dbs/initstand.ora

Copy password file từ Prim sang Stand và đổi tên:

Srv2: Thực hiện Copy đúng thông tin file:

scp oracle@srv1:/u01/app/oracle/product/19.3.0/dbhome_1/dbs/orapwduodb /u01/app/oracle/product/19.3.0/dbhome_1/dbs/orapwstand

Kiểm tra xem trên Srv2 đã có file orapw hay chưa:

ls -al /u01/app/oracle/product/19.3.0/dbhome_1/dbs/orapwstand

SRV2: Copy tnsname.ora file từ Prim sang Stand:

scp oracle@srv1:/u01/app/oracle/product/19.3.0/dbhome_1/network/admin/tnsnames.ora /u01/app/oracle/product/19.3.0/dbhome_1/network/admin/tnsnames.ora

Add listener và reload nó:

vi /u01/app/oracle/product/19.3.0/dbhome_1/network/admin/listener.ora

# Thêm đoạn sau vào file:

# listener.ora Network Configuration File: /u01/app/oracle/product/19.3.0/dbhome_1/network/admin/listener.ora

# Generated by Oracle configuration tools.

SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = stand.localdomain)
(ORACLE_HOME = /u01/app/oracle/product/19.3.0/dbhome_1)
(SID_NAME = stand)
)
)

LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = srv2.localdomain)(PORT = 1521))
)
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
)
ADR_BASE_LISTENER = /u01/app/oracle

Start và Reload Listener:

lsnrctl start
lsnrctl status
lsnrctl reload

Tiến hành tnsping kiểm tra kết nối mạng:

ping srv1
ping srv1.localdomain
ping srv2
ping srv2.localdomain
tnsping duodb
tnsping stand

word image 909 5

word image 909 6

  • hệ thống hiển thị kết quả ping thành công

Tạo adump folder:

mkdir -p /u01/app/oracle/admin/STAND/adump

Khởi động Stand DB trong nomount:

Thực hiện gán biến SID thành stand trước khi khởi động: (tên db là chữ thường, phân biệt chữ hoa/thường)

[oracle@srv2 ~]$ export ORACLE_SID=stand

Login vào sqlplus:
sqlplus / as sysdba
startup nomount
exit

DUPLICATE THE DATABASE

prim: DB open

stand: DB nomount

SRV1: Kết nối RMAN vào Prim và Stand cùng lúc: (trên Srv1)

rman TARGET sys/oracle@DUODB AUXILIARY sys/oracle@STAND

word image 909 7

Nhân bản (Duplicate the database) DB:

DUPLICATE TARGET DATABASE FOR STANDBY FROM ACTIVE DATABASE DORECOVER
SPFILE
SET DB_UNIQUE_NAME 'STAND' COMMENT 'Is standby'
SET LOG_ARCHIVE_DEST_2 'SERVICE=DUODB ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=DUODB'
SET AUDIT_FILE_DEST '/u01/app/oracle/admin/STAND/adump'
SET CONTROL_FILES '/u01/app/oracle/oradata/STAND/controlfile/control01.ctl'
SET FAL_SERVER 'DUODB'
NOFILENAMECHECK;

word image 909 8

  • Duplicate thành công

Kết nối vào Stand để check database: (Srv2)

sqlplus / as sysdba
select database_role from v$database;
show parameter db_name
show parameter db_unique_name

word image 909 9

Stand: thực hiện apply redo:

alter database recover managed standby database disconnect from session;

word image 909 10

Stand: thực hiện check apply redo:

select role, thread#, sequence#, action from v$dataguard_process;

word image 909 11

Prim: thực hiện check apply redo và thực hiện switch logfile check quá trình tạo log:

select sequence#, first_time, next_time from v$archived_log order by sequence#;

alter system switch logfile;

word image 909 12

Stand: kiểm tra log mới apply:

select sequence#, first_time, next_time, applied from v$archived_log order by sequence#;

word image 909 13

Stand: Stop quá trình recovery process

alter database recover managed standby database cancel;

word image 909 14

Stand: Enable flashback on the standby:

select flashback_on from v$database;
alter database flashback on;

Stand: Start the recovery process again on the standby

alter database recover managed standby database disconnect from session;

word image 909 15

TEST DATABASE: THỰC HIỆN QUÁ TRÌNH SWITCHOVER VỚI SQLPLUS:

Prim: kiểm tra đồng bộ dữ liệu sẵn sàng thực hiện switchover

sqlplus / as sysdba
alter database switchover to STAND verify;

Prim: Kiểm tra GAPS: no gaps

select status, gap_status from v$archive_dest_status where dest_id = 2;

word image 909 16

Prim: thực hiện lênh switchover:

alter database switchover to STAND;

word image 909 17

SRV2: (hiện tại Srv2 trở thành primary database) => open database:

sqlplus / as sysdba
alter database open;

SRV1: (hiện tại là standby database) và tiến hành mount database:

startup mount
alter database recover managed standby database disconnect;

word image 909 18

SRV1: check và kiểm tra thông tin:

select database_role from v$database;
select role, thread#, sequence#, action from v$dataguard_process;

word image 909 19

  • SRV1 hiện tại đã thành Standby database và SRV2 thành Primary
  • Quá trình thực hiện switchover thành công

TEST DATABASE: THỰC HIỆN SWITCHBACK:

SRV2: verify thông tin sẵn sàng thực hiện switch:

alter database switchover to DUODB verify;

SRV2: thực hiện switchover.

alter database switchover to DUODB;

word image 909 20

SRV1: Open database

alter database open;

SRV2: mount database và start recover redo logfile:

startup mount

alter database recover managed standby database disconnect;

word image 909 21

SRV2: kiểm tra thông tin sau khi thực hiện switchover

select database_role from v$database;

word image 909 22

  • quá trình switchover thành công

TROUBLESHOOTING

set linesize 200 pages 50
col value for a85
col name for a50

select name, value
from gv$parameter
where name in ('db_name','db_unique_name','log_archive_config',   
'log_archive_dest_1','log_archive_dest_2','log_archive_dest_3',
'log_archive_dest_state_1','log_archive_dest_state_2','log_archive_dest_state_3',
'remote_login_passwordfile','log_archive_format','log_archive_max_processes',
'fal_server','fal_client','db_file_name_convert',
'log_file_name_convert', 'standby_file_management')
order by 1;

word image 909 23

Chúc các bạn thực hiện thành công!

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