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à chuyển đổi SRV1 thành Standby và SRV2 thành Primary.
Kiểm tra thông tin database:
Primary: login vào database thông qua DGMGRL, kiểm tra thông tin DB
exit dgmgrl connect sys/oracle@duodb show configuration; show database verbose 'duodb';
DGMGRL> show database verbose ‘duodb’;
Database – duodb
Role: PRIMARY
Intended State: TRANSPORT-ON
Instance(s):
duodb
Properties:
DGConnectIdentifier = ‘duodb’
ObserverConnectIdentifier = ”
FastStartFailoverTarget = ”
PreferredObserverHosts = ”
LogShipping = ‘ON’
RedoRoutes = ”
LogXptMode = ‘ASYNC’
DelayMins = ‘0’
Binding = ‘optional’
MaxFailure = ‘0’
ReopenSecs = ‘300’
NetTimeout = ’30’
RedoCompression = ‘DISABLE’
PreferredApplyInstance = ”
ApplyInstanceTimeout = ‘0’
ApplyLagThreshold = ’30’
TransportLagThreshold = ’30’
TransportDisconnectedThreshold = ’30’
ApplyParallel = ‘AUTO’
ApplyInstances = ‘0’
StandbyFileManagement = ”
ArchiveLagTarget = ‘0’
LogArchiveMaxProcesses = ‘0’
LogArchiveMinSucceedDest = ‘0’
DataGuardSyncLatency = ‘0’
LogArchiveTrace = ‘0’
LogArchiveFormat = ”
DbFileNameConvert = ”
LogFileNameConvert = ”
ArchiveLocation = ”
AlternateLocation = ”
StandbyArchiveLocation = ”
StandbyAlternateLocation = ”
InconsistentProperties = ‘(monitor)’
InconsistentLogXptProps = ‘(monitor)’
LogXptStatus = ‘(monitor)’
SendQEntries = ‘(monitor)’
RecvQEntries = ‘(monitor)’
HostName = ‘srv1.localdomain’
StaticConnectIdentifier = ‘(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.11)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=duodb_DGMGRL.localdomain)(INSTANCE_NAME=duodb)(SERVER=DEDICATED)))’
TopWaitEvents = ‘(monitor)’
SidName = ‘(monitor)’
Log file locations:
Alert log : /u01/app/oracle/diag/rdbms/duodb/duodb/trace/alert_duodb.log
Data Guard Broker log : /u01/app/oracle/diag/rdbms/duodb/duodb/trace/drcduodb.log
Database Status:
SUCCESS
Primary: tiến hành check thông tin DB standby
show database verbose 'stand'; show database 'stand';
DGMGRL> show database verbose ‘stand’;
Database – stand
Role: PHYSICAL STANDBY
Intended State: APPLY-ON
Transport Lag: 0 seconds (computed 0 seconds ago)
Apply Lag: 0 seconds (computed 0 seconds ago)
Average Apply Rate: 37.00 KByte/s
Active Apply Rate: 885.00 KByte/s
Maximum Apply Rate: 921.00 KByte/s
Real Time Query: ON
Instance(s):
stand
Properties:
DGConnectIdentifier = ‘stand’
ObserverConnectIdentifier = ”
FastStartFailoverTarget = ”
PreferredObserverHosts = ”
LogShipping = ‘ON’
RedoRoutes = ”
LogXptMode = ‘ASYNC’
DelayMins = ‘0’
Binding = ‘optional’
MaxFailure = ‘0’
ReopenSecs = ‘300’
NetTimeout = ’30’
RedoCompression = ‘DISABLE’
PreferredApplyInstance = ”
ApplyInstanceTimeout = ‘0’
ApplyLagThreshold = ’30’
TransportLagThreshold = ’30’
TransportDisconnectedThreshold = ’30’
ApplyParallel = ‘AUTO’
ApplyInstances = ‘0’
StandbyFileManagement = ”
ArchiveLagTarget = ‘0’
LogArchiveMaxProcesses = ‘0’
LogArchiveMinSucceedDest = ‘0’
DataGuardSyncLatency = ‘0’
LogArchiveTrace = ‘0’
LogArchiveFormat = ”
DbFileNameConvert = ”
LogFileNameConvert = ”
ArchiveLocation = ”
AlternateLocation = ”
StandbyArchiveLocation = ”
StandbyAlternateLocation = ”
InconsistentProperties = ‘(monitor)’
InconsistentLogXptProps = ‘(monitor)’
LogXptStatus = ‘(monitor)’
SendQEntries = ‘(monitor)’
RecvQEntries = ‘(monitor)’
HostName = ‘srv2.localdomain’
StaticConnectIdentifier = ‘(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.12)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=STAND_DGMGRL.localdomain)(INSTANCE_NAME=stand)(SERVER=DEDICATED)))’
TopWaitEvents = ‘(monitor)’
SidName = ‘(monitor)’
Log file locations:
Alert log : /u01/app/oracle/diag/rdbms/stand/stand/trace/alert_stand.log
Data Guard Broker log : /u01/app/oracle/diag/rdbms/stand/stand/trace/drcstand.log
Database Status:
SUCCESS
DGMGRL> show database ‘stand’;
Database – stand
Role: PHYSICAL STANDBY
Intended State: APPLY-ON
Transport Lag: 0 seconds (computed 0 seconds ago)
Apply Lag: 0 seconds (computed 0 seconds ago)
Average Apply Rate: 36.00 KByte/s
Real Time Query: ON
Instance(s):
stand
Database Status:
SUCCESS
Primary: validate trạng thái sẵn sàng chuyển đổi sang Standby
dgmgrl connect sys/oracle@duodb validate database 'duodb'; show configuration; exit sqlplus / as sysdba select switchover_status from v$database;
[oracle@srv1 ~]$ dgmgrl
DGMGRL for Linux: Release 19.0.0.0.0 – Production on Tue May 7 22:50:37 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@duodb
Connected to “duodb”
Connected as SYSDBA.
DGMGRL> validate database ‘duodb’;
Database Role: Primary database
Ready for Switchover: Yes
Managed by Clusterware:
duodb: NO
Validating static connect identifier for the primary database duodb…
Unable to connect to database using (DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.11)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=duodb_DGMGRL.localdomain)(INSTANCE_NAME=duodb)(SERVER=DEDICATED)(STATIC_SERVICE=TRUE)))
ORA-12514: TNS:listener does not currently know of service requested in connect descriptor
Failed.
Warning: Ensure primary database’s StaticConnectIdentifier property
is configured properly so that the primary database can be restarted
by DGMGRL after switchover
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 55 seconds ago)
DGMGRL> exit
[oracle@srv1 ~]$ sqlplus / as sysdba
SQL*Plus: Release 19.0.0.0.0 – Production on Tue May 7 22:51:40 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 switchover_status from v$database;
SWITCHOVER_STATUS
——————–
TO STANDBY
Primary: thực hiện lệnh switchover
dgmgrl connect sys/oracle@duodb switchover to 'stand';
[oracle@srv1 ~]$ dgmgrl
DGMGRL for Linux: Release 19.0.0.0.0 – Production on Tue May 7 22:56:00 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@duodb
Connected to “duodb”
Connected as SYSDBA.
DGMGRL> switchover to ‘stand’;
Performing switchover NOW, please wait…
Operation requires a connection to database “stand”
Connecting …
Connected to “STAND”
Connected as SYSDBA.
New primary database “stand” is opening…
Operation requires start up of instance “duodb” on database “duodb”
Starting instance “duodb”…
Primary + Standby: check thông tin 2 node:
startup DB nếu hệ thống không tự động bật
select status,instance_name,database_role,open_mode from v$database,v$Instance; select process,status,sequence# from v$managed_standby;
SQL> select status,instance_name,database_role,open_mode from v$database,v$Instance;
STATUS INSTANCE_NAME DATABASE_ROLE OPEN_MODE
———— —————- —————- ——————–
OPEN duodb PHYSICAL STANDBY READ ONLY WITH APPLY
SQL> select status,instance_name,database_role,open_mode from v$database,v$Instance;
STATUS INSTANCE_NAME DATABASE_ROLE OPEN_MODE
———— —————- —————- ——————–
OPEN stand PRIMARY READ WRITE
SQL> select process,status,sequence# from v$managed_standby;
PROCESS STATUS SEQUENCE#
——— ———— ———-
DGRD ALLOCATED 0
ARCH CONNECTED 0
DGRD ALLOCATED 0
ARCH CONNECTED 0
ARCH CONNECTED 0
ARCH CONNECTED 0
RFS IDLE 0
RFS IDLE 22
RFS IDLE 0
RFS IDLE 0
MRP0 APPLYING_LOG 22
11 rows selected.
Như vậy là đã tiến hành chuyển đổi thành công, hiện Srv1 đang là Standby và Srv2 đang là Primary.
Chúc các bạn thành công.