玩过Oracle的同学都知道,手动来一次数据库主备切换,再等应用修改连接数据库的信息后重启,最终等到业务确认OK,怎么也得半个小时吧,要是白天切换还好(呵呵,你觉得老板会同意么?),大晚上呢?困不困?偶尔一次还好,要是业务多,增长快,遇到下面的情况,怎么办?
难道说只有一种结局了么?
天无绝人之路,幸亏有DG Broker,我等DB狗才得以幸免于难,今后我们将分系列,从DG Broker的简单介绍和配置,一直讲到如何在半夜主库挂掉时,也可以安心呼呼睡大觉……
一、DG Broker简介
DG Broker 是一个分布式管理框架,可将DG系统中的主库和所有备库当做一个整体来实现集中自动化管理DG的创建、维护和监控。
1. DGB 管理模型
主要包括:
configuration(所有数据库配置的集合)、database 和instance
2. DGB组件
Client Side:我们使用DGMGRL命令行工具来管理DGB
Server Side:DG Monitor包括一组进程(主要是DMON)和配置文件。
Data Guard Monitor (DMON) Process
DMON进程与本地数据库和其他数据库的DMON进程进行交互,执行请求。DMON进程还负责监控代理配置的健康和确保每个数据库都和配置保持一致。
配置文件:
sys@test> show parameter dg_broker_config_file
NAME TYPE VALUE
------------------------------------
dg_broker_config_file1 string /home/oracle/app/product/11.2.
0/db_1/dbs/dr1test_std.dat
dg_broker_config_file2 string /home/oracle/app/product/11.2.
0/db_1/dbs/dr2test_std.dat
二、DG B测试环境
OS:linux Redhat 7
oracle:11.2.0.4
10.10.10.22 主库 DB_UNIQUE_NAME test_pri
10.10.10.21 物理备库 DB_UNIQUE_NAME test_std
10.10.10.30 逻辑备库 DB_UNIQUE_NAME test_his
DG broker 配置名称为 test
sys密码:123456
三、DGB简单配置
1. 前提条件
1) 主备库必须已经存在(官方文档废话,不存在我怎么切?)
2) DG_BROKER_START参数
所有配置中的数据库的 DG_BROKER_START 参数设置为true。
主库和备库都执行
> alter system set DG_BROKER_START=true;
System altered.
>show parameter DG_BROKER_START
NAME TYPE VALUE
------------------------------------
dg_broker_start boolean TRUE
3)必须使用server parameter file(SPFILE)文件启动数据库。
因为DGB启动的时候需要从spfile中导入参数值到DGB的配置文件中。
CREATE SPFILE FROM PFILE='pfilename';
未使用spfile的实例,就重启使用spfile。
启动实例后,设置DG_BROKER_START=TRUE。
查看是否使用spfile
> show parameter spfile;
NAME TYPE VALUE
------------------------------------
spfile string /home/oracle/app/product/11.2.
0/db_1/dbs/spfiletest.ora
或者
> select distinct ISSPECIFIED from v$spparameter;
ISSPEC
------
TRUE
FALSE
4) 连接串
所有主备库都应配置tnsname.ora中的连接串,保证自己可以tnsping通自己并且任意两个库都可以互通。
2. 创建配置文件、添加物理备库
1) 调用DGMGRL
-bash-4.2$ dgmgrl
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.
2) 连接到主库
两种情况:
在10.10.10.22(主库)连接到本地
DGMGRL>CONNECT sys;
Password:******
Connected.
CONNECT sys;
默认连接到本地,连接远程加@连接串
例如在10.10.10.22连接到远程备库10.10.10.21
DGMGRL> CONNECT sys@test_std;
Password:******
Connected.
3) 创建代理配置文件、添加数据库。
创建代理配置文件,首先定义配置包含主库的概要文件,主备库的概要文件名称的设置和DB_UNIQUE_NAME相同。
主库:
> show parameter db_unique_name
NAME TYPE VALUE
------------------------------------
db_unique_name string TEST_PRI
备库:
> show parameter db_unique_name
NAME TYPE VALUE
------------------------------------
db_unique_name string test_std
创建配置文件:
DGMGRL>CREATE CONFIGURATION 'test' AS PRIMARY DATABASE IS 'TEST_PRI' CONNECT IDENTIFIER IS TEST_PRI;
Configuration "test" created with primary database "TEST_PRI"
4) 查看配置信息
DGMGRL> SHOW CONFIGURATION;
Configuration - test
Protection Mode: MaxPerformance
Databases:
TEST_PRI - Primary database
Fast-Start Failover: DISABLED
Configuration Status:
DISABLED
5) 在配置文件中添加备库。
DGMGRL>ADD DATABASE test_std AS CONNECT IDENTIFIER IS test_std;
Database "test_std" added
DGMGRL> show configuration;
Configuration - test
Protection Mode: MaxPerformance
Databases:
TEST_PRI - Primary database
test_std - Physical standby database
Fast-Start Failover: DISABLED
Configuration Status:
DISABLED
添加历史库(逻辑备库):
DGMGRL> ADD DATABASE test_HIS AS CONNECT IDENTIFIER IS test_HIS;
Database "test_his" added
这一步请确认可以在主库上以sys用户远程登录到备库。否则报:
Error: ORA-01017: invalid username/password; logon denied
添加逻辑备库是和物理备库同样的步骤,DGB会自己识别备库是物理还是逻辑。
3. 启用配置文件和数据库
1) 启用配置中所有数据库,用如下命令:
DGMGRL>ENABLE CONFIGURATION;
过程如下:
先查看,状态为disabled
DGMGRL> show configuration;
Configuration - test
Protection Mode: MaxPerformance
Databases:
TEST_PRI - Primary database
test_std - Physical standby database
Fast-Start Failover: DISABLED
Configuration Status:
DISABLED
启用:
DGMGRL> enable configuration;
Enabled.
再确认状态:为success
DGMGRL> show configuration;
Configuration - test
Protection Mode: MaxPerformance
Databases:
TEST_PRI - Primary database
test_std - Physical standby database
Fast-Start Failover: DISABLED
Configuration Status:
SUCCESS
2) 启用数据库
这个步骤不是必须的,除非之前用DISABLE DATABASE禁用过备库。通常,启用配置同样会启用备库。
启用备库:
DGMGRL> ENABLE DATABASE test_std;
Enabled.
确认:
DGMGRL> show database test_std;
Database - test_std
Role: PHYSICAL STANDBY
Intended State: APPLY-ON
Transport Lag: 0 seconds (computed 0 seconds ago)
Apply Lag: 0 seconds (computed 0 seconds ago)
Apply Rate: 16.00 KByte/s
Real Time Query: ON
Instance(s):
test
Database Status:
SUCCESS
DG Broker 简介与简单配置到此为止,预知切换如何,请看下文分解。
领取专属 10元无门槛券
私享最新 技术干货