DGMGRL cho phép bạn thực hiện các hoạt động quản lý Data Guard như tạo cấu hình, thêm bản sao dữ liệu, kích hoạt và vô hiệu hóa cấu hình, kiểm tra trạng thái của các thành phần Data Guard, thực hiện failover và switchover, và nhiều hơn nữa.
Dưới đây là một số tính năng chính của DGMGRL:
- Quản lý cấu hình Data Guard: Tạo cấu hình, thêm hoặc xóa database, thiết lập connect identifiers.
- Quản lý trạng thái: Kiểm tra trạng thái của các bản sao dữ liệu và bản gốc, bao gồm lag, mode, protection, và role.
- Thực hiện failover và switchover: Chuyển đổi giữa các bản sao dữ liệu và bản gốc khi cần thiết, đảm bảo tính sẵn sàng và liên tục của hệ thống.
- Thực hiện các hoạt động về bảo trì: Kích hoạt và vô hiệu hóa cấu hình, tắt và bật quản lý Data Guard Observer.
- Xem báo cáo và log: Xem thông tin chi tiết về các sự kiện, log và báo cáo của Data Guard.
Các bạn có thể xem các bước dựng CSDL Data Guard tại đây: https://datalinks.vn/huong-dan-cai-dat-oracle-data-guard-physical-standby-ver-19c-voi-rman/
THÔNG TIN CHI TIẾT 2 NODE:
SRV1 – server tôi đặt là Primary
SRV2 – server tôi đặt là Standby
Mục tiêu của demo này là khi Primary SRV1 bị sự cố thì SRV2 Standby sẽ thành Primary.
Rebuild lại SRV1 trở thành Standby sau thảm hoạ.
Kiểm tra thông tin database: (yêu cầu phải cấu hình Oracle data guard broker trước khi thực hiện theo hướng dẫn này)
Nếu bạn chưa cấu hình Oracle data guard broker thì xem ở đây: https://datalinks.vn/cau-hinh-oracle-data-guard-broker-dgmgrl-oracle-data-guard-19c/
Primary + Standby: check thông tin cần thiết
select flashback_on,instance_name,database_role from v$database,V$instance;
SQL> select flashback_on,instance_name,database_role from v$database,V$instance;
FLASHBACK_ON INSTANCE_NAME DATABASE_ROLE
—————— —————- —————-
YES duodb PRIMARY
FLASHBACK_ON INSTANCE_NAME DATABASE_ROLE
—————— —————- —————-
YES stand PHYSICAL STANDBY
Standby: check thông tin và tiến hành Failover
select process,status,sequence# from v$managed_standby; select status, gap_status from v$archive_dest_status where dest_id = 2; dgmgrl connect sys/oracle@stand show configuration; validate database stand; failover to stand; select flashback_on,instance_name,database_role from v$database,V$instance;
SQL> select process,status,sequence# from v$managed_standby;
PROCESS STATUS SEQUENCE#
——— ———— ———-
ARCH CONNECTED 0
DGRD ALLOCATED 0
DGRD ALLOCATED 0
ARCH CONNECTED 0
ARCH CLOSING 25
ARCH CONNECTED 0
RFS IDLE 26
RFS IDLE 0
RFS IDLE 0
MRP0 APPLYING_LOG 26
10 rows selected.
SQL> select status, gap_status from v$archive_dest_status where dest_id = 2;
STATUS GAP_STATUS
——— ————————
INACTIVE
[oracle@srv2 ~]$ dgmgrl
DGMGRL for Linux: Release 19.0.0.0.0 – Production on Tue May 7 23:49:01 2024
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle and/or its affiliates. All rights reserved.
Welcome to DGMGRL, type “help” for information.
DGMGRL> connect sys/oracle@stand
Connected to “STAND”
Connected as SYSDBA.
DGMGRL> show configuration;
Configuration – duong_primary
Protection Mode: MaxPerformance
Members:
duodb – Primary database
stand – Physical standby database
Fast-Start Failover: Disabled
Configuration Status:
SUCCESS (status updated 50 seconds ago)
DGMGRL> failover to stand;
Performing failover NOW, please wait…
Failover succeeded, new primary is “stand”
SQL> select flashback_on,instance_name,database_role from v$database,V$instance;
FLASHBACK_ON INSTANCE_NAME DATABASE_ROLE
—————— —————- —————-
YES stand PRIMARY
Sau khi failover thì hiện tại Stand đang là Primary còn Primary cũ giả sử là đang Crash rồi chúng ra phải dựng lại nó thành Standby.
SRV1: check thông tin và tiến hành restart DB, Mount sau đó Rebuild SRV1
select flashback_on,instance_name,database_role from v$database,V$instance; shut immediate startup mount exit dgmgrl connect sys/oracle@stand reinstate database 'duodb'; show configuration; show database 'stand'; show database 'duodb'; exit sqlplus / as sysdba select flashback_on,instance_name,database_role from v$database,V$instance; select status, gap_status from v$archive_dest_status where dest_id = 2;
SQL> select flashback_on,instance_name,database_role from v$database,V$instance;
FLASHBACK_ON INSTANCE_NAME DATABASE_ROLE
—————— —————- —————-
YES duodb PRIMARY
SQL> shut immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup mount
ORACLE instance started.
Total System Global Area 1828713632 bytes
Fixed Size 8897696 bytes
Variable Size 436207616 bytes
Database Buffers 1375731712 bytes
Redo Buffers 7876608 bytes
Database mounted.
SQL> exit
Disconnected from Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 – Production
Version 19.3.0.0.0
[oracle@srv1 ~]$ dgmgrl
DGMGRL for Linux: Release 19.0.0.0.0 – Production on Wed May 8 10:29:39 2024
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle and/or its affiliates. All rights reserved.
Welcome to DGMGRL, type “help” for information.
DGMGRL> connect sys/oracle@stand
Connected to “STAND”
Connected as SYSDBA.
DGMGRL> reinstate database ‘duodb’;
Reinstating database “duodb”, please wait…
Reinstatement of database “duodb” succeeded
DGMGRL> show configuration;
Configuration – duong_primary
Protection Mode: MaxPerformance
Members:
stand – Primary database
duodb – Physical standby database
Fast-Start Failover: Disabled
Configuration Status:
SUCCESS (status updated 52 seconds ago)
DGMGRL> show database ‘stand’;
Database – stand
Role: PRIMARY
Intended State: TRANSPORT-ON
Instance(s):
stand
Database Status:
SUCCESS
DGMGRL> show database duodb;
Database – duodb
Role: PHYSICAL STANDBY
Intended State: APPLY-ON
Transport Lag: 0 seconds (computed 1 second ago)
Apply Lag: 0 seconds (computed 1 second ago)
Average Apply Rate: 7.00 KByte/s
Real Time Query: ON
Instance(s):
duodb
Database Status:
SUCCESS
DGMGRL> exit
[oracle@srv1 ~]$ sqlplus / as sysdba
SQL*Plus: Release 19.0.0.0.0 – Production on Wed May 8 10:33:53 2024
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle. All rights reserved.
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 – Production
Version 19.3.0.0.0
SQL> select flashback_on,instance_name,database_role from v$database,V$instance;
FLASHBACK_ON INSTANCE_NAME DATABASE_ROLE
—————— —————- —————-
YES duodb PHYSICAL STANDBY
SQL> select process,status,sequence# from v$managed_standby;
PROCESS STATUS SEQUENCE#
——— ———— ———-
ARCH CLOSING 1
ARCH CONNECTED 0
ARCH CONNECTED 0
ARCH CLOSING 2
DGRD ALLOCATED 0
DGRD ALLOCATED 0
MRP0 APPLYING_LOG 3
RFS IDLE 3
RFS IDLE 0
RFS IDLE 0
10 rows selected.
SQL> select status, gap_status from v$archive_dest_status where dest_id = 2;
STATUS GAP_STATUS
——— ————————
INACTIVE
Quá trình rebuild đã hoàn tất thành công.