Oracle Data Guard thực hiện SWITCHOVER Oracle 19c

Dưới đây là hướng dẫn các bước thực hiện switchover Oracle data guard, chuyển đổi vai trò prim, standby giữa 2 node trong hệ thống.

THÔNG TIN CHI TIẾT 2 NODE:

ItemsPrimary – SRV1Standby – SRV2
hostnamesrv1srv2
ip192.168.1.11192.168.1.12
db nameduodbduodb
instance_nameduodbstand
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

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

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

Kiểm tra thông tin database:

Primary database:

SQL> select name,open_mode,database_role from v$database;

NAME OPEN_MODE DATABASE_ROLE

——— ——————– —————-

DUODB READ WRITE PRIMARY

Standby database:

SQL> select name,open_mode,database_role from v$database;

NAME OPEN_MODE DATABASE_ROLE

——— ——————– —————-

DUODB MOUNTED PHYSICAL STANDBY

Pre-check trước khi thực hiện chuyển đổi:

SQL> ALTER SESSION SET nls_date_format='DD-MON-YYYY HH24:MI:SS';

Session altered.

SQL> SELECT sequence#, first_time, next_time, applied FROM v$archived_log ORDER BY sequence#;

SEQUENCE# FIRST_TIME NEXT_TIME APPLIED

———- ——————– ——————– ———

5 04-MAY-2024 06:18:36 04-MAY-2024 10:45:55 YES

6 04-MAY-2024 10:45:55 04-MAY-2024 12:44:04 YES

7 04-MAY-2024 12:44:04 04-MAY-2024 18:01:27 YES

8 04-MAY-2024 18:01:27 04-MAY-2024 18:02:34 YES

9 04-MAY-2024 18:02:34 04-MAY-2024 18:02:34 YES

10 04-MAY-2024 18:02:34 04-MAY-2024 18:11:12 YES

10 04-MAY-2024 18:02:34 04-MAY-2024 18:11:12 YES

11 04-MAY-2024 18:11:12 04-MAY-2024 18:17:07 YES

11 04-MAY-2024 18:11:12 04-MAY-2024 18:17:07 YES

12 04-MAY-2024 18:17:07 04-MAY-2024 18:22:13 YES

12 04-MAY-2024 18:17:07 04-MAY-2024 18:22:13 YES

SEQUENCE# FIRST_TIME NEXT_TIME APPLIED

———- ——————– ——————– ———

13 04-MAY-2024 18:22:17 04-MAY-2024 18:23:41 YES

14 04-MAY-2024 18:23:41 04-MAY-2024 18:43:37 YES

15 04-MAY-2024 18:43:41 04-MAY-2024 18:44:23 NO

15 04-MAY-2024 18:43:41 04-MAY-2024 18:44:23 YES

16 04-MAY-2024 18:44:23 05-MAY-2024 14:48:54 NO

16 04-MAY-2024 18:44:23 05-MAY-2024 14:48:54 NO

17 rows selected.

select switchover_status from v$database;

SWITCHOVER_STATUS

——————–

TO STANDBY

Thông tin bên trên trả về trạng thái hiện tại của DG: trong đó SWITCHOVER_STATUS có thể nhận các thông số sau:

Not Allowed: thông báo không thể thực hiện chuyển đổi được, có thể SRV này là standby hoặc Standby nhưng chưa được thực hiện switchover sang Primary.

Session Active: Cho biết rằng có các phiên SQL đang hoạt động được gắn vào cơ sở dữ liệu chính hoặc dự phòng cần được ngắt kết nối trước khi cho phép thao tác chuyển đổi.

Switchover Pending: Đây là cơ sở dữ liệu dự phòng và yêu cầu chuyển đổi cơ sở dữ liệu chính đã được nhận nhưng chưa được xử lý.

Switchover Latent: Quá trình chuyển đổi đang ở chế độ chờ xử lý nhưng chưa hoàn tất và quay trở lại cơ sở dữ liệu chính

To Primary: Đây là cơ sở dữ liệu dự phòng, không có phiên hoạt động, được phép chuyển sang cơ sở dữ liệu chính
To Standby: Đây là cơ sở dữ liệu chính, không có phiên hoạt động, được phép chuyển sang cơ sở dữ liệu dự phòng

Recovery Needed: Đây là cơ sở dữ liệu dự phòng chưa nhận được yêu cầu chuyển đổi

Primary database: thực hiện chuyển đổi (LƯU Ý: quá trình chuyển đổi phải được thực hiện trên PRIMARY database)

Kiểm tra role và thông tin db_unique_name trên cả 2 SRV:

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

NAME OPEN_MODE DB_UNIQUE_NAME DATABASE_ROLE

——— ——————– —————————— —————-

DUODB READ WRITE duodb PRIMARY

NAME OPEN_MODE DB_UNIQUE_NAME DATABASE_ROLE

——— ——————– —————————— —————-

DUODB MOUNTED STAND PHYSICAL STANDBY

Chúng ta thấy rằng: SRV Primary có db_unique_name: duodb, còn Standby có db_unique_name là STAND => nghĩa là giờ chúng ta cần switchover duodb thành STAND là xong.

Verify thử trước khi thực hiện: (đảm bảo không có GAPS)

alter database switchover to STAND verify;

=> đảm bảo không có lỗi gì xuất hiện

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

STATUS GAP_STATUS

——— ————————

VALID NO GAP

SRV1: Thực hiện quá trình switchover:

alter database switchover to STAND;

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;

// lệnh này tiến hành đồng bộ redo log trở lại sau quá trình bị disconnect

Check thông tin trên 2 SRV:

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

Kiểm tra lại GAP trên 2 SRV:

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

Switchover thành công, SRV1 giờ đã trở thành Standby và SRV2 hiện đã thành Primary.

Chúng ta cũng có thể thao tác chuyển đổi ngược lại quá trình trên switchoverback làm tương tự như bên trên.

Chúc các bạn thành công.

 

Datalinks.vn

Hello các bạn, tôi là Dương Nguyễn (DuoDBA - https://www.youtube.com/@DuoDBA) tác giả của blog này. Mong muốn được chia sẻ kiến thức và kinh nghiệm về cơ sở dữ liệu với những người đam mê và quan tâm đến lĩnh vực này. Tôi có tổ chức các khoá Coaching về #OracleDatabase và luyện thi #OCP thường xuyên, các bạn muốn có người đồng hành thì alo tôi nhé. Call/Zalo: 0765 871 888. Thanks you !.....
0 0 đá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