Oracle RAC 11g DG Broker配置和測試

之前在《RHEL6.4 + Oracle 11g DG測試環境快速搭建參考》已經簡單說過。

本篇在實驗環境中實際配置

環境: RHEL 6.5 + Oracle 11.2.0.4 GI、DB + Primary RAC(2 nodes)+ Standby RAC(2 nodes)

該實驗環境的搭建可參考:模擬生產搭建Standby RAC實驗環境(11.2.0.4 DG)

配置並測試DG Broker步驟:

1.停止MRP

在備庫停止MRP:

alter database recover managed standby database cancel;

2.修改 Listener.ora 檔案

在各個節點grid使用者的監聽檔案中,

[grid@jyrac1 ~]$ cd $ORACLE_HOME/network/admin
[grid@jyrac1 admin]$ vi listener.ora

分別增加以下內容:

--Primary Node1
SID_LIST_LISTENER=(SID_LIST=(SID_DESC=(SID_NAME=jyzhao1)(GLOBAL_DBNAME=jyzhao_dgmgrl)(ORACLE_HOME=/opt/app/oracle/product/11.2.0/dbhome_1))) --Primary Node2 SID_LIST_LISTENER=(SID_LIST=(SID_DESC=(SID_NAME=jyzhao2)(GLOBAL_DBNAME=jyzhao_dgmgrl)(ORACLE_HOME=/opt/app/oracle/product/11.2.0/dbhome_1))) --Standby Node1 SID_LIST_LISTENER=(SID_LIST=(SID_DESC=(SID_NAME=jyzhao1)(GLOBAL_DBNAME=mynas_dgmgrl)(ORACLE_HOME=/opt/app/oracle/product/11.2.0/dbhome_1))) --Standby Node2 SID_LIST_LISTENER=(SID_LIST=(SID_DESC=(SID_NAME=jyzhao2)(GLOBAL_DBNAME=mynas_dgmgrl)(ORACLE_HOME=/opt/app/oracle/product/11.2.0/dbhome_1)))

注:因為我這裡的環境之前沒有配置其他的靜態監聽,而且預設使用的監聽名字是LISTENER,所以,只需要直接新增這一行配置即可。

新增完畢後分別在各節點重新啟動監聽:

--@all nodes
lsnrctl stop
lsnrctl start

3.修改引數檔案

檢查當前DG_BROKER_CONFIG_FILE和dg_broker_start配置:

--ON Primary:

SYS@jyzhao1 >show parameter dg_broker

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
dg_broker_config_file1 string /opt/app/oracle/product/11.2.0
/dbhome_1/dbs/dr1jyzhao.dat
dg_broker_config_file2 string /opt/app/oracle/product/11.2.0
/dbhome_1/dbs/dr2jyzhao.dat
dg_broker_start boolean FALSE --ON Standby: SQL> show parameter dg_broker NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
dg_broker_config_file1 string /opt/app/oracle/product/11.2.0
/dbhome_1/dbs/dr1mynas.dat
dg_broker_config_file2 string /opt/app/oracle/product/11.2.0
/dbhome_1/dbs/dr2mynas.dat
dg_broker_start boolean FALSE

需要把DG Broker配置檔案的預設路徑修改到ASM磁碟上,並將dg_broker_start修改為TRUE,具體操作如下:

--ON Primary:
ASMCMD>
mkdir +fra1/jyzhao/DATAGUARDCONFIG
mkdir +data1/jyzhao/DATAGUARDCONFIG SQL>
ALTER SYSTEM SET DG_BROKER_CONFIG_FILE1='+fra1/jyzhao/DATAGUARDCONFIG/dgb_config1.ora' SCOPE=BOTH sid='*';
ALTER SYSTEM SET DG_BROKER_CONFIG_FILE2='+data1/jyzhao/DATAGUARDCONFIG/dgb_config2.ora' SCOPE=BOTH sid='*';
alter system set dg_broker_start=true scope=both sid='*';
show parameter dg_broker --ON Standby:
ASMCMD>
mkdir +fra/mynas/DATAGUARDCONFIG
mkdir +data/mynas/DATAGUARDCONFIG SQL>
ALTER SYSTEM SET DG_BROKER_CONFIG_FILE1='+fra/mynas/DATAGUARDCONFIG/dgb_config1.ora' SCOPE=BOTH sid='*';
ALTER SYSTEM SET DG_BROKER_CONFIG_FILE2='+data/mynas/DATAGUARDCONFIG/dgb_config2.ora' SCOPE=BOTH sid='*';
alter system set dg_broker_start=true scope=both sid='*';
show parameter dg_broker

此時,主備庫的alert告警日誌中都會有啟動DG Broker的資訊:

Sun Aug 13 16:45:27 2017
DMON started with pid=41, OS id=7432
Starting Data Guard Broker (DMON)
Sun Aug 13 16:45:49 2017
INSV started with pid=54, OS id=7459

4.建立配置

dgmgrl sys/oracle
在dgmgrl下建立配置:

CREATE CONFIGURATION 'jydb' AS PRIMARY DATABASE IS 'jyzhao' CONNECT IDENTIFIER IS 'jyzhao';
ADD DATABASE 'mynas' AS CONNECT IDENTIFIER IS 'mynas';

實際操作如下:

DGMGRL> CREATE CONFIGURATION 'jydb' AS PRIMARY DATABASE IS 'jyzhao' CONNECT IDENTIFIER IS 'jyzhao';
Configuration "jydb" created with primary database "jyzhao" DGMGRL> ADD DATABASE 'mynas' AS CONNECT IDENTIFIER IS 'mynas';
Database "mynas" added

5.啟用配置

在dgmgrl下啟用配置,檢視配置:

enable configuration;
show configuration;
show database verbose jyzhao

實際操作如下:

DGMGRL> enable configuration;
Enabled. DGMGRL> show configuration; Configuration - jydb Protection Mode: MaxPerformance
Databases:
jyzhao - Primary database
mynas - Physical standby database Fast-Start Failover: DISABLED Configuration Status:
SUCCESS DGMGRL> show database verbose jyzhao Database - jyzhao Role: PRIMARY
Intended State: TRANSPORT-ON
Instance(s):
jyzhao1
jyzhao2 Properties:
DGConnectIdentifier = 'jyzhao'
ObserverConnectIdentifier = ''
LogXptMode = 'ASYNC'
DelayMins = '0'
Binding = 'optional'
MaxFailure = '0'
MaxConnections = '1'
ReopenSecs = '300'
NetTimeout = '30'
RedoCompression = 'DISABLE'
LogShipping = 'ON'
PreferredApplyInstance = ''
ApplyInstanceTimeout = '0'
ApplyParallel = 'AUTO'
StandbyFileManagement = 'AUTO'
ArchiveLagTarget = '0'
LogArchiveMaxProcesses = '4'
LogArchiveMinSucceedDest = '1'
DbFileNameConvert = '+data/mynas, +data1/jyzhao'
LogFileNameConvert = '+data/mynas, +data1/jyzhao, +fra/mynas, +fra1/jyzhao'
FastStartFailoverTarget = ''
InconsistentProperties = '(monitor)'
InconsistentLogXptProps = '(monitor)'
SendQEntries = '(monitor)'
LogXptStatus = '(monitor)'
RecvQEntries = '(monitor)'
ApplyLagThreshold = '0'
TransportLagThreshold = '0'
TransportDisconnectedThreshold = '30'
SidName(*)
StaticConnectIdentifier(*)
StandbyArchiveLocation(*)
AlternateLocation(*)
LogArchiveTrace(*)
LogArchiveFormat(*)
TopWaitEvents(*)
(*) - Please check specific instance for the property value Database Status:
SUCCESS DGMGRL>

附一些常用的命令彙總:

show configuration;
show database jyzhao;
show database mynas;
show database verbose jyzhao;
show database verbose mynas;
show instance verbose jyzhao1 on database jyzhao;
show instance verbose jyzhao2 on database jyzhao;
show instance verbose jyzhao1 on database mynas;
show instance verbose jyzhao2 on database mynas;

這些常用命令的輸出結果大家可以在自己的實驗環境測試一下,我這裡就不贅述了。

6.切換測試

我們配置DG Broker主要就是為了方便切換,在配置正確的環境中,只需要一條命令就可以switchover成功。
在dgmgrl下切換測試:

--一條命令完成switchover主備切換:
switchover to mynas; --一條命令完成switchover主備切回:
switchover to jyzhao;

來看看實際DG Broker的強大功能,以主備切換為例:

[oracle@jyrac1 ~]$ dgmgrl sys/oracle
DGMGRL for Linux: Version 11.2.0.4.0 - 64bit Production Copyright (c) 2000, 2009, Oracle. All rights reserved. Welcome to DGMGRL, type "help" for information.
Connected.
DGMGRL> switchover to mynas;
Performing switchover NOW, please wait...
Operation requires a connection to instance "jyzhao2" on database "mynas"
Connecting to instance "jyzhao2"...
Connected.
New primary database "mynas" is opening...
Operation requires startup of instance "jyzhao1" on database "jyzhao"
Starting instance "jyzhao1"...
ORACLE instance started.
Database mounted.
Database opened.
Switchover succeeded, new primary is "mynas"

整個過程一條簡單命令實現,這相當於我之前手工切換《Oracle 11g DG手工switchover切換標準化流程》做的所有功能。

有了配置正確的DG Broker,老闆再也不用擔心員工去switchover切換搞的手忙腳亂了哈~