千家信息网

oracle11g dg broker配置服务的高可用例子分析

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章主要介绍"oracle11g dg broker配置服务的高可用例子分析",在日常操作中,相信很多人在oracle11g dg broker配置服务的高可用例子分析问题上存在疑惑,小编查阅了各
千家信息网最后更新 2026年11月02日oracle11g dg broker配置服务的高可用例子分析

这篇文章主要介绍"oracle11g dg broker配置服务的高可用例子分析",在日常操作中,相信很多人在oracle11g dg broker配置服务的高可用例子分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"oracle11g dg broker配置服务的高可用例子分析"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

前提:

主库:10.9.21.178 db_name :db2

dg库:10.9.21.179 db_name :db1

一:oracle DG 服务的自动故障切换操作整体步骤:

1.配置先创建服务dbha

2.创建触发器 自动在主库启动hbha服务

3.在primary库上设置service的TAF功能

4.修改程序 中的 url,实现服务的自动切换

二:解释几个概念

1.TAF(Transparent Application Failover)即透明应用程序故障转移技术。当初始化连接出现问题无法连接时,该功能可以保证应用程序重新连接到可用服务。在重新连接过程中,之前的活动事务将会被回滚,但在"具体条件"下TAF可以保证SELECT语句不被终止。

TAF的特性:

1:TAF是ORACLE客户端提供的一项特性,使用TAF,对客户端的环境有一定的要求,比如JAVA的JDBC驱动、Oracle客户端的版本等(8i开始支持TAF);

2:大致上TAF可以分为2种,连接时的TAF和会话建立后TAF;

3:TAF本身与是否RAC环境无关,但一般都用在RAC环境,最小程度的减少最应用的影响,单实例环境下也可以使用TAF,这样使用PL/SQL developer连接数据库,即使数据库实例重启,也不需要重新连接;

4:TAF配置可以在客户端也可以在服务器端,也就是在连接数据库的时候,比如程序url添加,

或者tnsname.ora中配置FAILOVER_MODE=(TYPE = SELECT)(METHOD = BASIC)(RETIRES = 180)(DELAY = 15))),这就是客户端的配置,那么服务端配置的话就是在服务端修改每个服务的属性!

begin

dbms_service.modify_service

('dbha',

FAILOVER_METHOD=>'BASIC',

FAILOVER_TYPE=>'SELECT',

FAILOVER_RETRIES=>15,

FAILOVER_DELAY=>5);

end;

/

5:配置listener.ora文件的GLOBAL_DBNAME参数后将会禁用TAF;

6:oracle TAF特性和scan ip failover的区别是,scan ip连接的话如果scan ip所在的节点故障,

那么该连接就断开了,如果程序中没有自动重连机制,或者程序连接池中的timeout值还没有

到时间,那么你就必须重启服务以便于重连数据库,但是TAF的话不会让程序报错,只是会回滚

没有提交的事务,自动重连另一个节点,并且FAILOVER_TYPE=>'SELECT'这种方式下select是不会

停的,继续在另一个节点查出结果!

三:具体流程如下:

3.1在主库添加并启动服务,注意这个服务是要给程序中配置URL使用的!

先添加,然后启动该服务,如果不启动,那么show parameter service_name 看不到,启动后service_name参数中就出现了新的服务,并且pmon进程自动完成监听注册上这个服务,并且重启数据库后添加的服务就消失了,失效了!

添加服务的程序包如下:

DBMS_SERVICE.CREATE_SERVICE(

service_name IN VARCHAR2,

network_name IN VARCHAR2,

goal IN NUMBER DEFAULT NULL,

dtp IN BOOLEAN DEFAULT NULL,

aq_ha_notifications IN BOOLEAN DEFAULT NULL,

failover_method IN VARCHAR2 DEFAULT NULL,

failover_type IN VARCHAR2 DEFAULT NULL,

failover_retries IN NUMBER DEFAULT NULL,

failover_delay IN NUMBER DEFAULT NULL,

clb_goal IN NUMBER DEFAULT NULL,

edition IN VARCHAR2 DEFAULT NULL);

--The network name of the service as used in SQLNet connect descriptors for client connections. This is limited to the NET

具体执行:其中第一个dbha是添加服务的名字,第二个是网络服务名

1.添加服务

begin

dbms_service.create_service('dbha','dbha');

end;

/

2.启动服务

begin

DBMS_SERVICE.START_SERVICE('dbha');

end;

/

这时候你去看监听的状态,你会发现刚添加的服务已经被pmon进程动态注册了

3.停止服务:

begin

DBMS_SERVICE.STOP_SERVICE('dbha');

end;

/

4.删除服务:

begin

DBMS_SERVICE.DELETE_SERVICE('dbha');

end;

/

3.2.在主库添加触发器,该触发器的作用是判断这个实例为主库角色(read write)则启动前边添加的

服务(dbha)

create trigger tri_startservice after startup on database

declare

dg_role varchar(30);

begin

select database_role into dg_role from v$database;

if dg_role='PRIMARY' then

DBMS_SERVICE.START_SERVICE('dbha');

end if;

end;

/

3.3在主库给前面添加的服务开启TAF特性:

begin

dbms_service.modify_service

('dbha',

FAILOVER_METHOD=>'BASIC',

FAILOVER_TYPE=>'SELECT',

FAILOVER_RETRIES=>15,

FAILOVER_DELAY=>5);

end;

/

3.4.修改程序的URL

datasource.url=jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=10.9.21.178)(PORT=1521))(ADDRESS=(PROTOCOL=TCP)(HOST=10.9.21.179)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=dbha)(FAILOVER_MODE=(TYPE=SELECT)(METHOD = BASIC)(RETRIES = 180)(DELAY = 5)) ) )

如果是oracle rac 的话:

datasource.url=jdbc:oracle:thin:@(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.216)(PORT = 1521))(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.217)(PORT = 1521))(LOAD_BALANCE = yes)(FAILOVER = yes)(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = cbl)(FAILOVER_MODE=(TYPE = SELECT)(METHOD = BASIC)(RETIRES = 180)(DELAY = 15))))

至此oracle 11g adg服务高可用配置完毕

总结:这时候可以测试下,当你主库shutdown abort的时候,你的从库自动转换成主库,然后触发器启动dbha服务,然后pmon自动注册监听,然后由于你配置了TAF特性,所以你的服务并不会报错(ORA-0133:ORACLE initialization or shutdown in progress错误),而是自动的连接到新的主库!

验证过程:

1.客户端配置tnsnames.ora

dbha=

(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST = 10.9.21.178)(PORT = 1521))

(ADDRESS = (PROTOCOL = TCP)(HOST = 10.9.21.179)(PORT = 1521))

)

(CONNECT_DATA =

(SERVICE_NAME = dbha)

)

)

2.使用dbha服务连接数据库,

[oracle@beijing-fuli-hadoop-02 admin]$ sqlplus liuwenhe/liuwenhe@dbha

SQL*Plus: Release 11.2.0.4.0 Production on Sat Jul 13 17:11:55 2019

Copyright (c) 1982, 2013, Oracle. All rights reserved.

Connected to:

Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production

With the Partitioning, OLAP, Data Mining and Real Application Testing options

确认连接的是主库db2

SQL> select instance_name from v$instance;

INSTANCE_NAME

----------------

db2

3.异常关闭db2

SQL> shu abort

ORACLE instance shut down.

4.在之前连接好的会话继续查询实例名字,不报错但是卡着,因为主库db2已经关闭了,而dg库

db1还在自动转换中,所以都无法提供服务(大概10秒),然后连接上了db1:

SQL> select instance_name from v$instance;

INSTANCE_NAME

----------------

db2

SQL> select instance_name from v$instance; -----卡了10秒大概之后显示了db1

INSTANCE_NAME

----------------

db1

到此,关于"oracle11g dg broker配置服务的高可用例子分析"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

服务 配置 程序 客户 数据 数据库 特性 例子 分析 实例 环境 触发器 学习 客户端 故障 端的 节点 应用 监听 事务 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 广州紫鲸互联网科技有限公司 互联网与科技金融数据 美国互联网科技 奇酷互联网科技公司 融贸通互联网科技 北京华百购互联网科技有限公司 茂名市互联网科技产业园 苏州五指互联网络科技有限 新兴科技互联网创新大赛颁奖典礼 链环科技传统企业怎么转型互联网 996高科技互联网公司 四川慕妮娅互联网科技有限公司 互联网时代的科技公司 互联网相关科技技术 上海创道互联网络科技有限公司 九思连强互联网电子科技有限公司 艺电能源互联网科技有限公司招聘 唐山双旺合互联网科技产业园 10位科技互联网大佬 山东亿川互联网科技有限责任公司 中关村互联网科技集团 互联网科技社 互联网科技集团 银优互联网科技有限公司 长亮科技互联网金融 互联网前沿科技 无锡溥仪互联网科技有限公司 以后互联网后是啥科技 翼展科技 首家互联网医院 高科技互联网发展前景如何
0