oracle11g服务配置,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服务配置,oracle11g dg broker配置服务的高可用相关推荐
- Oracle DG 之--DG Broker 配置基本概念
Oracle DG 之DG Broker 配置 系统环境: 操作系统: RedHat EL55_64 Oracle: Oracle 11.2.0.3.0 Data Guard 配置: 主库bjd ...
- DG Broker配置、日志传输、备库管理与主备切换
DG Broker配置.日志传输.备库管理与主备切换 DG Broker的配置与启用 启动DG Broker 配置DG Broker 使用DG Broker查看数据库信息 使用DG Broker管理日 ...
- 企业分布式微服务云SpringCloud SpringBoot mybatis (七)高可用的分布式配置中心(Spring Cloud Config)...
讲述了一个服务如何从配置中心读取文件,配置中心如何从远程git读取配置文件,当服务实例很多时,都从配置中心读取文件,这时可以考虑将配置中心做成一个微服务,将其集群化,从而达到高可用,架构图如下: 一. ...
- oracle11g broker,张欣橙 Oracle11g 配置DG broker
在配置DG broker之前需要确保Dataguard配置正常且主库和备库均使用spfile. 1. 主库配置 配置DG_BROKER_START参数 检查主库dg_broker_start设置 SQ ...
- Oracle 11g Dataguard 物理备库配置(四)之broker snapshot standby测试
Oracle 11g Dataguard 物理备库配置系列文档 Oracle 11g Dataguard 物理备库配置(一)之duplicate创建 Oracle 11g Dataguard 物理备库 ...
- Oracle 11g Dataguard 物理备库配置(一)之Duplicate配置
Oracle 11g Dataguard Duplicate物理备库配置(一)之物理备库创建配置 # ver:1.5 第五次修改 # modify: 2013.8.16 # author: koumm ...
- oracle dataguard in-memory,Oracle 11g Dataguard 物理备库配置(一)之Duplicate配置
Oracle 11g Dataguard Duplicate物理备库配置(一)之物理备库创建配置 # ver:1.5 第五次修改 # modify: 2013.8.16 # author: koumm ...
- 运维企业专题(4)LVS高可用与负载均衡前篇——先学原理,再学配置
我保证看完这篇文章,面试时问到相关问题轻轻松松解决,本文末尾会结合全文教你该如何回答面试官的问题 1.什么是LVS? LVS 是 Linux Virtual Server的简写,意即Linux虚拟服务 ...
- 服务部署如何做到高可用?这份“三级跳”秘籍送给你\n
一个高可用的服务需要从部署.变更.预案.监控.安全等多方面考虑.如何做到99.99%服务高可用的要求,需要各个角色的工程师共同努力.从部署的角度,本文介绍了高可用服务所需具备的规范,案例部分通过对Yu ...
- Spring Cloud【Finchley】-13 Eureka Server HA高可用 2个/3个节点的搭建及服务注册调用
文章目录 导读 官方文档 Eureka Server高可用集群概述 2个Eureka Server节点高可用集群搭建步骤 Step1. 新建子模块 microservice-discovery-eur ...
最新文章
- [转]在cocos2d-x中让一个项目适配iphone、iphone retina、ipad、ipad retina四种分辨率
- padding在css中是什么意思,CSS里的padding是什么意思?
- 手把手教你如何加入到github的开源世界! (转)
- fliqlo windows_Windows小众软件工具推荐
- STM32F030控制LED
- [No000053]我25岁了,是应该继续挣钱,还是选择自己的爱好?--正好庆祝自己25岁生日...
- 妈妈再也不怕我不会画漂亮的图了!
- 【Boost】boost库中function和bind一起使用的技巧(二)
- Mysql中的IFNULL函数的详解(嵌套查询等重点)如果第一个为空就执行第二个
- AS3.0文档类:FLASH右键菜单文档类
- 红外传感器型号和参数_各类红外传感器比较
- ISO20000/ISO27001体系认证最短周期
- Xshell常用功能
- 百度地图api如何查询周边大学、商场等的个数?可实现翻页
- 使用代理爬去微信公众号_Python3WebSpider/9.5-使用代理爬取微信公众号文章.md at master · Lainton/Python3WebSpider · GitHub...
- 会议OA之我的会议(排座送审)
- android连路由器 mtu,解决app无网络问题,将宽带路由器MTU从1500修改成1480
- cartographer中的pose_extrapolator梳理
- TimeQuest Timing Analyzer简单使用
- 毕设--自动浇花系统的设计