前提:

主库: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服务配置,oracle11g dg broker配置服务的高可用相关推荐

  1. Oracle DG 之--DG Broker 配置基本概念

    Oracle DG 之DG Broker 配置 系统环境: 操作系统: RedHat EL55_64 Oracle:    Oracle 11.2.0.3.0 Data Guard 配置: 主库bjd ...

  2. DG Broker配置、日志传输、备库管理与主备切换

    DG Broker配置.日志传输.备库管理与主备切换 DG Broker的配置与启用 启动DG Broker 配置DG Broker 使用DG Broker查看数据库信息 使用DG Broker管理日 ...

  3. 企业分布式微服务云SpringCloud SpringBoot mybatis (七)高可用的分布式配置中心(Spring Cloud Config)...

    讲述了一个服务如何从配置中心读取文件,配置中心如何从远程git读取配置文件,当服务实例很多时,都从配置中心读取文件,这时可以考虑将配置中心做成一个微服务,将其集群化,从而达到高可用,架构图如下: 一. ...

  4. oracle11g broker,张欣橙 Oracle11g 配置DG broker

    在配置DG broker之前需要确保Dataguard配置正常且主库和备库均使用spfile. 1. 主库配置 配置DG_BROKER_START参数 检查主库dg_broker_start设置 SQ ...

  5. Oracle 11g Dataguard 物理备库配置(四)之broker snapshot standby测试

    Oracle 11g Dataguard 物理备库配置系列文档 Oracle 11g Dataguard 物理备库配置(一)之duplicate创建 Oracle 11g Dataguard 物理备库 ...

  6. Oracle 11g Dataguard 物理备库配置(一)之Duplicate配置

    Oracle 11g Dataguard Duplicate物理备库配置(一)之物理备库创建配置 # ver:1.5 第五次修改 # modify: 2013.8.16 # author: koumm ...

  7. oracle dataguard in-memory,Oracle 11g Dataguard 物理备库配置(一)之Duplicate配置

    Oracle 11g Dataguard Duplicate物理备库配置(一)之物理备库创建配置 # ver:1.5 第五次修改 # modify: 2013.8.16 # author: koumm ...

  8. 运维企业专题(4)LVS高可用与负载均衡前篇——先学原理,再学配置

    我保证看完这篇文章,面试时问到相关问题轻轻松松解决,本文末尾会结合全文教你该如何回答面试官的问题 1.什么是LVS? LVS 是 Linux Virtual Server的简写,意即Linux虚拟服务 ...

  9. 服务部署如何做到高可用?这份“三级跳”秘籍送给你\n

    一个高可用的服务需要从部署.变更.预案.监控.安全等多方面考虑.如何做到99.99%服务高可用的要求,需要各个角色的工程师共同努力.从部署的角度,本文介绍了高可用服务所需具备的规范,案例部分通过对Yu ...

  10. Spring Cloud【Finchley】-13 Eureka Server HA高可用 2个/3个节点的搭建及服务注册调用

    文章目录 导读 官方文档 Eureka Server高可用集群概述 2个Eureka Server节点高可用集群搭建步骤 Step1. 新建子模块 microservice-discovery-eur ...

最新文章

  1. [转]在cocos2d-x中让一个项目适配iphone、iphone retina、ipad、ipad retina四种分辨率
  2. padding在css中是什么意思,CSS里的padding是什么意思?
  3. 手把手教你如何加入到github的开源世界! (转)
  4. fliqlo windows_Windows小众软件工具推荐
  5. STM32F030控制LED
  6. [No000053]我25岁了,是应该继续挣钱,还是选择自己的爱好?--正好庆祝自己25岁生日...
  7. 妈妈再也不怕我不会画漂亮的图了!
  8. 【Boost】boost库中function和bind一起使用的技巧(二)
  9. Mysql中的IFNULL函数的详解(嵌套查询等重点)如果第一个为空就执行第二个
  10. AS3.0文档类:FLASH右键菜单文档类
  11. 红外传感器型号和参数_各类红外传感器比较
  12. ISO20000/ISO27001体系认证最短周期
  13. Xshell常用功能
  14. 百度地图api如何查询周边大学、商场等的个数?可实现翻页
  15. 使用代理爬去微信公众号_Python3WebSpider/9.5-使用代理爬取微信公众号文章.md at master · Lainton/Python3WebSpider · GitHub...
  16. 会议OA之我的会议(排座送审)
  17. android连路由器 mtu,解决app无网络问题,将宽带路由器MTU从1500修改成1480
  18. cartographer中的pose_extrapolator梳理
  19. TimeQuest Timing Analyzer简单使用
  20. 毕设--自动浇花系统的设计

热门文章

  1. 发送邮件的python脚本
  2. 夏令营提高班上午上机测试 Day 1 解题报告
  3. Servlet详细介绍
  4. 九度OJ 1175:打牌 (模式匹配)
  5. 'WebElement' object is not iterable
  6. 方维分享系统修改,本地安装失败,后台无法登陆
  7. 在VS中使用独立的项目(Project)开发DNN模块
  8. BGP安全特性(华为设备)
  9. ELK详解(四)——Head插件安装
  10. Cobbler详解(二)——Cobbler安装配置