oracle 19c adg broker的配置
Data Guard Broker是简化DG复杂的管理过程的一个工具。仅在控制端输入一个命令就能方便实现主备数据库间的切换。
在Data Guard Broker的基础上,配置并启用Fast-Start Failover,就能自动检测发现主机故障,实现主备切换,故障转移。
一、配置broker(主库)
select flashback_on from v$database;
alter database flashback on;
show parameter flashback;
#主从数据库必须置为最大可用状态,如果不是也不要着急,一会用dgmgrl来切成最大可用。
select database_role,protection_mode,open_mode, switchover_status from v$database;
alter system set dg_broker_start=true;
show parameter dg_broker_start;
二、配置broker(备库)
select flashback_on from v$database;
alter database flashback on;
show parameter flashback;
#这里如果报错需要先取消日志应用。
#ERROR at line 1:
#ORA-01153: an incompatible media recovery is active
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;
alter database flashback on;
show parameter flashback;
alter database recover managed standby database using current logfile disconnect from session;
select database_role,protection_mode,open_mode, switchover_status from v$database;
alter system set dg_broker_start=true;
show parameter dg_broker_start;
##重置备库log_archive_dest_2参数不然添加备库时会报错
alter system set log_archive_dest_2='';
三、create configuration
dgmgrl sys/oracle
create configuration orcl as primary database is primary connect identifier is primary;
add database standby as connect identifier is standby maintained as physical;
###如果不重置log_archive_dest_2参数,添加备库时这里会报错
四、修改broker参数
1.配置最大可用模式
注意:两个数据库必须置为最大可用模式,如果不是,可用用如下命令来操作:
dgmgrl sys/oracle
edit database primary set property 'logxptmode'='sync';
edit database standby set property 'logxptmode'='sync';
edit configuration set protection mode as MAXAvailability;
show configuration;
2.修改快速故障转移的延迟时间
修改快速故障转移的延迟时间(默认为30秒,有些少):
主库终止 从库延迟10s后从库再启FastStartFailoverThreshold (表示观察者与备库同主库断网后几秒,自动启动failover)
注意:在生产中要把FastStartFailoverThreshold这个参数调大点,要不在生产中发生网络不畅通的情况下,等10s就自动切换了,所以还是改大点吧,我改的是3分钟
DGMGRL> edit configuration set property FastStartFailoverThreshold=180;
3.修改staticconnectidentifier参数或者静态参数文件
如果没有这个步骤在broker切换时会提示连接不到数据库,需要手动启动新备库。
因为staticconnectidentifier
指向静态监听名<db_unique_name>
该参数默认指向的service_name是<db_unique_name>_DGMGRL如果不修改该参数则需要修改监听文件。
DGMGRL> edit database primary set property StaticConnectIdentifier= '(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=oracle1)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=orcl)(INSTANCE_NAME=orcl)(SERVER=DEDICATED)))';
Property "staticconnectidentifier" updated
DGMGRL> edit database standby set property StaticConnectIdentifier= '(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=oracle2)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=orcl)(INSTANCE_NAME=orcl)(SERVER=DEDICATED)))';
Property "staticconnectidentifier" updated
##(SERVICE_NAME=orcl)(INSTANCE_NAME=orcl)为监听文件中的监听名
show database verbose primary;可以看到该设置的参数。
修改监听文件方法
在listener.ora中
SID_LIST_LISTENER =最后一个反括号前添加如下部分。并重新启动监听。
(SID_DESC =
(GLOBAL_DBNAME=ocrl_DGMGRL)
(ORACLE_HOME =/u01/app/oracle/product/12.1.0/db_1)
(SID_NAME =ocrl)
)
4.启动快速故障转移:
enable configuration;
show configuration;
show configuration verbose;
show database verbose primary;
show database verbose standby;
五.启动备库观察
连接到备库操作:
DGMGRL> start observer;
备注:通过DGMGRL启动observer会阻塞当前会话,如果这时结束控制台observer会退出,所以建议用后台方式启动
nohup dgmgrl sys/123456@SL "start observer file=FSFO.dat">>observer.log 2>&1 &
六.broker切换
下面的standby、primary非关键字而是tnsname名。
现在可以来回自由切换了。
DGMGRL> show configuration;
DGMGRL> switchover to standby;
DGMGRL> switchover to primary;
七.其他broker操作
测试环境
primary为主库
standby为备库。
1.查看日志应用情况:
select process, status, thread#, sequence#, block#, blocks from v$managed_standby;
2.暂停与开启日志应用:
备库操作。
edit database standby set state=“APPLY-OFF”;
show database standby
edit database standby set state=“APPLY-ON”;
3.暂停与开启日志传输:
主库操作
edit database primary set state=“transport-off”;
show database primary
edit database primary set state=“transport-on”;
4.将数据库离线
edit database primary set state=‘offline’;
5.禁用与删除配置
disable configuration
禁用某个备用库
disable database ‘test’;
从配置中删除备用库
remove database ‘test’
删除配置
remove configuration
5.failover
做failover要小心,总会有一些信息丢失.另外failover还可以加入IMMEDIATE选项,立即切换.
另外这样做如果主库如果能开启的情况下,要打开flashback功能,才能做reinstate操作
ENABLE FAST_START FAILOVER;
show fast_start failover
如果想打开Stuck Archiver 触发条件.执行如下:
DGMGRL> enable fast_start failover Condition “Stuck Archiver”
可以指定触发ora错误是进行failover 如触发ora55623时自动failover
DGMGRL> ENABLE FAST_START FAILOVER CONDITION 55623;
6.reinstate database standby;
在11G以前,failover后,原来的主库需要重建.在11G后可以使用reinstate来重建备用库,这个操作仅仅需要打开flashback功能.
reinstate database standby;
11G要打开flashback的功能,已经不需要进入到mount状态,随时都可以切换flashback功能.
备用库要启用flashback功能,首先要停止redo-apply.切换后在打开redo-apply.
7.snapshot standby
转换为snapshot standby后,数据库为读写模式。
转换为snapshot standby需先进行failover
select database_role,open_mode,protection_mode,force_logging,FLASHBACK_ON from v$database;
disable fast_start failover ;
convert database standby to snapshot standby;
Select database_role,open_mode,protection_mode,force_logging,FLASHBACK_ON,resetlogs_change#,prior_resetlogs_change# from v d a t a b a s e ; s e l e c t ∗ f r o m v database; select * from v database;select∗fromvrestore_point;
将数据库恢复成物理standby模式。
convert database standby to physical STANDBY;