关于dg broker的简单配置(r5笔记第99天)
dataguard broker是在dataguard使用基础上提供的一个工具,可以把原本复杂的命令控制语句集成起来,比如switchover,failover等等,可能在多个备库的情况下需要敲不少的命令,这个dg broker的优越性就显示出来了。
当然dg broker需要启用还是需要预备一些条件的,比如需要设置local_listener,需要在spfile的基础上,需要在网络配置中进行dgmgrl相关的标示。
应该是在内部实现中默认拥有这些配置。
我们先来看看一个简单的配置情况。
首先启用dg broker,在数据库参数中有一个dg_broker_start的参数,默认为false,改为true即可。在后台进程中就会看见dmon相关的进程起来了。
SQL> alter system set dg_broker_start=true ;
System altered.
如果要连入dg broker也很简单,就是使用sys用户,和建立一个数据库连接差不多。
[ora11g@oel1 admin]$ dgmgrl
DGMGRL for Linux: Version 11.2.0.1.0 - Production
Copyright (c) 2000, 2009, Oracle. All rights reserved.
Welcome to DGMGRL, type "help" for information.
DGMGRL> connect sys/oracle@test11g
Connected.
查看配置信息。因为这个时候还没有进行基本的配置,还是看不到什么信息的。
DGMGRL> show configuration
ORA-16532: Data Guard broker configuration does not exist
Configuration details cannot be determined by DGMGRL
这个时候需要做两种配置,一种是primary database的配置,另外一种是standby的配置
主库的配置如下:
DGMGRL> create configuration 'TEST11G' as
primary database is TEST11G
connect identifier is TEST11G;
Configuration "TEST11G" created with primary database "test11g"
备库的配置如下:
DGMGRL> add database DG11G
as connect identifier is DG11G
maintained as physical;
Database "dg11g" added
这个时候再来查看配置信息就会显出出来了,不过可以看到配置还没有启用。
DGMGRL> show configuration;
Configuration - TEST11G
Protection Mode: MaxPerformance
Databases:
test11g - Primary database
dg11g - Physical standby database
Fast-Start Failover: DISABLED
Configuration Status:
DISABLED
如果想查看更多的关于主库,备库的信息,可以使用verbose的选项
DGMGRL> show database verbose TEST11G
Database - test11g
Role: PRIMARY
Intended State: OFFLINE
Instance(s):
TEST11G
Properties:
DGConnectIdentifier = 'test11g'
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 = '/u02/ora11g/oradata/TEST11G, /u02/dg11g/oradata/DG11G'
LogFileNameConvert = '/u02/ora11g/oradata/TEST11G, /u02/ora11g/oradata/DG11G'
FastStartFailoverTarget = ''
StatusReport = '(monitor)'
InconsistentProperties = '(monitor)'
InconsistentLogXptProps = '(monitor)'
SendQEntries = '(monitor)'
LogXptStatus = '(monitor)'
RecvQEntries = '(monitor)'
HostName = 'oel1'
SidName = 'TEST11G'
StaticConnectIdentifier = '(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oel1)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=TEST11G_DGMGRL)(INSTANCE_NAME=TEST11G)(SERVER=DEDICATED)))'
StandbyArchiveLocation = '/u02/ora11g/switchover/TEST11G/archivelog'
AlternateLocation = ''
LogArchiveTrace = '0'
LogArchiveFormat = '%t_%s_%r.dbf'
TopWaitEvents = '(monitor)'
Database Status:
DISABLED
这个时候所做的工作就比较简单了,我们直接启用即可。
DGMGRL> enable configuration;
Enabled.
DGMGRL> enable database TEST11G;
Enabled.
DGMGRL> enable database DG11G;
Enabled.
这个时候我们来看看是否能够正常显示broker的信息
DGMGRL> show database TEST11G;
Database - test11g
Role: PRIMARY
Intended State: TRANSPORT-ON
Instance(s):
TEST11G
Error: ORA-16797: database is not using a server parameter file
Database Status:
ERROR
从错误可以看出去,还是需要设置spfile的。
DGMGRL> show database DG11G;
Database - dg11g
Role: PHYSICAL STANDBY
Intended State: APPLY-ON
Transport Lag: (unknown)
Apply Lag: (unknown)
Real Time Query: OFF
Instance(s):
DG11G
Database Status:
DGM-17016: failed to retrieve status for database "dg11g"
ORA-16525: the Data Guard broker is not yet available
ORA-16625: cannot reach database "dg11g"
这个时候启用spfile即可。 --主库端验证spfile是否使用,如果没有启用,需要启用后重启数据库实例
SQL> show parameter spfile
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
spfile string
SQL> create spfile from pfile;
File created.
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup
ORACLE instance started.
Total System Global Area 435224576 bytes
Fixed Size 1337044 bytes
Variable Size 272632108 bytes
Database Buffers 155189248 bytes
Redo Buffers 6066176 bytes
Database mounted.
Database opened.
SQL> show parameter spfile
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
spfile string /u01/app/ora11g/product/11.2.0
/dbhome_1/dbs/spfileTEST11G.or
a
备库中的设置基本是一样的
配置完成了,dg broker还是能做很多工作的。
比如修改备库为read-only模式
DGMGRL
DGMGRL> edit database 'DG11G' set state='read-only';
Succeeded.
通过sql命令查看状态的变化如下:
SQL> select instance_name,status from v$instance;
INSTANCE_NAME STATUS
---------------- ------------
DG11G MOUNTED
SQL> /
INSTANCE_NAME STATUS
---------------- ------------
DG11G OPEN
当然主要的功能还是做switchover,failover的切换,后台会做大量的检查和校验,switchover的命令在dg broker里面极为精简,但是有利有弊,如果配置不当,很可能就会出现下面的问题
DGMGRL> switchover to 'DG11G';
Performing switchover NOW, please wait...
Error: ORA-16664: unable to receive the result from a database
这个时候就会很可能备库变主库,存在两个主库了。
还是需要好好检查一下dg broker的准备条件。
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Laravel项目中timeAgo字段语言转换的改善方法示例
- php生成微信红包数组的方法
- 解决php写入数据库乱码的问题
- php写入txt乱码的解决方法
- PHP实现的AES 128位加密算法示例
- php写入mysql中文乱码的实例解决方法
- php实现的支付宝网页支付功能示例【基于TP5框架】
- php校验公钥是否可用的实例方法
- PHP实现的微信APP支付功能示例【基于TP5框架】
- php创建多级目录与级联删除文件的方法示例
- Linux VPS定时备份服务器/网站数据到Github私人仓库
- Laravel框架验证码类用法实例分析
- Yii框架常见缓存应用实例小结
- 使用Docker搭建DPlayer视频弹幕接口API后端
- php+jQuery ajax实现的实时刷新显示数据功能示例