00600 ora 关闭oracle_Oracle集群高可用故障切换

原文链接

[WK-T]ORACLE 10G 配置故障转移(Failover)​blog.itpub.net
4fe40e354d045460d2ba4345c2cd2658.png

文章参考:《大话 Oracle RAC 集群 高可用性 备份与恢复》 张晓明 编著

Oracle RAC 同时具备HA(High Availiablity) 和LB(LoadBalance). 而其高可用性的基础就是Failover(故障转移). 它指集群中任何一个节点的故障都不会影响用户的使用,连接到故障节点的用户会被自动转移到健康节点,从用户感受而言, 是感觉不到这种切换。

Oracle 10g RAC 的Failover 可以分为3种:

1. Client-Side Connect time Failover

2. TAF

3. Service-Side TAF

注意事项: 不能在listener.ora 文件中设置GLOBAL_NAME, 因为这个参数会禁用Connect-time Failover 和 Transparent Application Failover.

一.Client-Side Connect Time Failover

Client-Side Connect Time Failover的含义:如果用户端tnsname 中配置了多个地址,用户发起连接请求时,会先尝试连接地址表中的第一个地址,如果这个连接尝试失败,则继续尝试使用第二个地址,直至连接成功或者遍历了所有的地址。

这种Failover的特点:只在建立连接那一时刻起作用,也就是说,这种Failover方式只在发起连接时才会去感知节点故障,如果节点没有反应,则自动尝试地址列表中的下一个地址。一旦连接建立之后,节点出现故障都不会做处理,从客户端的表现就是会话断开了,用户程序必须重新建立连接。

启用这种Failover的方法就是在客户端的tnsnames.ora中添加FAILOVER=ON 条目,这个参数默认就是ON,所以即使不添加这个条目,客户端也会获得这种Failover能力。

示例:

在客户端的tnsnames.ora 配置如下:

1f46c7304a77094e2685ae36d91a2992.png

批注:SERVER = DEDICATED 表示专用服务器模式设置,数据库将为每一个客户机连接分配专用资源。当预期客户机连接总数较小,或客户机向数据库发出的请求持续时间较长,使用该模式;SERVER = SHARED 表示共享服务器模式,多个客户端连接共享一个数据库分配的资源池,当大量用户需要同时连接数据库并且有效地利用系统资源时,使用此模式。

客户端连接测试:

1)会优先从节点rac1连接数据库

3af0826aa765a5b82c669d1685c1b68b.png

2)如果节点rac1出现故障,客户端的会话就会断开,不会自动连接到其他正常节点,需要重启会话建立连接

[oracle@rac1 ~]$ srvctl status instance -d orcl -i orcl1

Instance orcl1 is running on node rac1

[oracle@rac1 ~]$ srvctl stop instance -d orcl -i orcl1

[oracle@rac1 ~]$ srvctl status instance -d orcl -i orcl1

Instance orcl1 is not running on node rac1

504461025967a9b3271fc9a08b91591d.png

3)当rac1实例恢复正常之后,新的会话还会优先通过该节点连接数据库

[oracle@rac1 ~]$ srvctl status instance -d orcl -i orcl1

Instance orcl1 is not running on node rac1

[oracle@rac1 ~]$ srvctl start instance -d orcl -i orcl1

[oracle@rac1 ~]$ srvctl status instance -d orcl -i orcl1

Instance orcl1 is running on node rac1

d8ee07c9d084ffc8f9e7b47343d15a06.png

二. TAF(Transparent Application Failover)

客户端连接故障切换最大的问题是,建立连接后如果节点发生故障,是不能做到故障转移的,这样数据库的可用性就会大打折扣,所以oracle又提供了TAF的方法来解决连接时的故障切换,所谓TAF,就是连接建立以后,应用系统运行过程中,如果某个实例发生故障,连接到这个实例上的用户会被自动迁移到其他的健康实例上。对于应用程序而言,这个迁移过程是透明的,不需要用户的介入,当然,这种透明要是有引导的,因为用户的未提交事务会回滚。 相对与Client-Side Connect Time Failover的用户程序中断,抛出连接错误,用户必须重启应用程序,TAF 这种方式在提高HA上有了很大的进步。

TAF 的配置也很简单,只需要在客户端的tnsnames.ora中添加FAILOVER_MODE配置项。这个条目有4个子项目需要定义。

1.METHOD: 用户定义何时创建到其实例的连接,有BASIC和PRECONNECT两种可选值。

BASIC: 是指在感知到节点故障时才创建到其他实例的连接。

PRECONNECT: 是在最初建立连接时就同时建立到所有实例的连接,当发生故障时,立刻就可以切换到其他链路上。

两种方法比较: BASIC方式在Failover时会有时间延迟,PRECONNECT方式虽然没有时间延迟,但是建立多个冗余连接会消耗更多资源。

2.TYPE:用于定义发生故障时对完成的SQL 语句如何处理,其中有2种类型:session和select.

这两种方式对于未提交的事务都会自动回滚,区别在于对select 语句的处理,对于select,用户正在执行的select语句会被转移到新的实例上,在新的节点上继续返回后续结果集,而已经返回的记录集则抛弃。

假设用户正在节点1上执行查询,整个结果集共有100条记录,现在已从节点1上返回10条记录,这时节点1宕机,用户连接被转移到节点2上,如果是session模式,则需要重新执行查询语句;如果是select方式,会从节点2上继续返回剩下的90天记录,而已经从节点1返回的10条记录不会重复返回给用户,对于用户而言,感受不到这种切换。

显然为了实现select 方式,Oracle 必须为每个session保存更多的内容,包括游标,用户上下文等,需要更多的资源也是用资源换时间的方案。

3.DELAY和RETRIES 这两个参数代表重试间隔时间和重试次数。

示例:

在客户端的tnsnames.ora 配置如下:

c64e4bf5420a0ae5e773197bb5ab9528.png

客户端连接测试:

1)因为节点rac1是正常的,所以会从该节点连接到数据库

5e175d2b612b0d80193cf69f2f1127cd.png

2)关闭节点rac1,当前会话会自动切换到正常节点连接数据库

21f71b608894bc6ed09c6da3545cbcfd.png

补充:查看用户连接的TAF配置,如下

8ee5749822af42c9851b43ee7622373d.png

批注:查询结果中如果是NONE,说明这个连接没有使用TAF;如果和客户端tnsnames.ora配置中的相同,说明使用了TAF。
三.Service-Side TAF
Service-Side TAF,服务器透明故障转移可以看作是TAF的一个变种。首先Service-Side TAF也是TAF,所有TAF的特点它都具有;其次,这种TAF是在服务器
上配置的,而不像TAF在客户端配置的。
Client-Side TAF 配置过程需要修改客户端的tnsnames.ora文件,如果有很多客户端使用这个数据库,那么每次微小的参数调整都要把所有客户端的
tnsnames.ora都调整一遍,既低效又易出错。而Service-Side TAF通过结合Service,在数据库里保存FAIL-MODE的配置,把所有的TAF配置保存在数据字典
中,从而省去了客户端的配置工作。
从配置参数而言,Service-Side TAF和TAF相比多了一个Instance Role 的概念。所谓实例Instance Role就是当多个Instance参与一个Service时,可以配置优化
使用哪一个Instance为用户提供服务。用户共享两种可选角色。
PREFERRED:首选实例,会优先选择拥有这个角色的实例提供服务。
AVAILABLE:后备实例,用户连接会优先选择PREFERRED的Instance,当PREFERRED的Instance不可用时,才会转到AVAILABLE的Instance上。
要使用Service-Side TAF必须配置Service。Service 可以在创建数据库时创建,也可以在数据库创建之后修改;既可以通过配置向导也可以通过命令方式进行
配置。
下面分别演示采用DBCA和手工两种方式配置Service的过程。
方式一:使用DBCA配置Service
1)oracle用户下运行DBCA出现欢迎界面

c1c6bf15163bb4e30304989c0cee3033.png


2)在已有的RAC数据库上创建新的Service,此处选择"Service Management"

bfbe5474f26481c11aaec98ca9915e56.png


3)选择要配置Service的数据库

976b9c8e4f64d563b6d354b27ba24373.png


4)添加Service名字以及定义实例角色

f605bbc2cc427a456a340be4d7f03995.png


5)查看配置的Service是否创建成功
[oracle@rac1 ~]$ crs_stat -t -v
Name Type R/RA F/FT Target State Host
----------------------------------------------------------------------
ora.HHPEN1.db application 0/1 0/1 OFFLINE OFFLINE
ora.orcl.db application 0/1 0/1 ONLINE ONLINE rac2
ora....l1.inst application 0/5 0/0 ONLINE ONLINE rac1
ora....l2.inst application 0/5 0/0 ONLINE ONLINE rac2
ora...._TAF.cs application 0/0 0/1 ONLINE ONLINE rac1
ora....cl1.srv application 0/0 0/0 ONLINE ONLINE rac1
ora....SM1.asm application 0/5 0/0 ONLINE ONLINE rac1
ora....C1.lsnr application 0/5 0/0 ONLINE ONLINE rac1
ora.rac1.gsd application 0/5 0/0 ONLINE ONLINE rac1
ora.rac1.ons application 0/3 0/0 ONLINE ONLINE rac1
ora.rac1.vip application 0/0 0/0 ONLINE ONLINE rac1
ora....SM2.asm application 0/5 0/0 ONLINE ONLINE rac2
ora....C2.lsnr application 0/5 0/0 ONLINE ONLINE rac2
ora.rac2.gsd application 0/5 0/0 ONLINE ONLINE rac2
ora.rac2.ons application 0/3 0/0 ONLINE ONLINE rac2
ora.rac2.vip application 0/0 0/0 ONLINE ONLINE rac2
SQL> show parameter service;
NAME TYPE VALUE
------------------------------------ -------- ------------------------------
service_names string orcl, orcl_TAF6)如果客户端想要通过service方式连接数据库,需要在TNS条目中使用service_name方式引用数据库。
7)修改Service的TAF配置,需要使用dbms_service.modify_service

d93d1913edd0f5d6a66b0e3cb6fb2fb2.png


批注:无论使用DBCA还是srvctl命令来配置Service,都无法配置TAF的type、delay、retries这三个属性。必须使用dbms_service包来修改这些属性。
8)确认修改已经生效

57842b9c42d36f0e90f46382dca56dc7.png


方式二:使用命令配置Service
1)创建Service语法如下:
srvctl add service -d -s -r "preferred-instance-list" -a "avaiable-instance-list" -p
批注:其中TAF-policy选项可以是BASIC或PRECONNECT
2)查看配置
srvctl config service -d database-name [-s service-name] [-a]
客户端连接测试:
在ORACLE 10G中配置了Service-Side TAF之后,客户端甚至不需要tnsnames.ora文件,而是使用ORACLE 10G提供的新连接方法Easy Connect Naming
Methods。为了展示这一特性,测试之前先把客户端的tnsnames.ora文件改名存放,以保证客户端在没有TNS的情况下进行这个测试。使用Easy Connect
Naming Methods时的连接串格式如下:
username/password@[//]host[:port][/service_name]
客户端连接操作如下:

a5228340623c99dc87953a796ba8dbf7.png


批注:该连接对应的server process的OS PID是14469,在操作系统上杀掉这个进程。
[oracle@rac1 ~]$ ps -ef|grep 14469
oracle 14469 1 0 19:47 ? 00:00:00 oracleorcl1 (LOCAL=NO)
oracle 18000 17607 0 19:50 pts/3 00:00:00 grep 14469
[oracle@rac1 ~]$ kill -9 14469当前会话查询实例名和运行状态,此时会话已断开如下:

3f148a6f430e426d73b98b4c107329be.png


批注:按理说应该会跳转到rac2节点上,肯定哪个地方配置错了,稍后重新再看看。
上述方法没奏效,我选择关闭节点rac1的实例,验证结果。

f24d7760fe8479c350f47b6299b06b4c.png

5bb577caf6919171a150872f7a516d50.png

补充:相同环境进行测试failover
1.客户端连接并查询会话ID

19016bd976da3d8fe480a2d1b63093be.png


2.通过session ID在服务器端操作系统中删除该会话连接

b363f4e8c30e3260ff37e48da54448be.png

37c6bcb715e9e3cc77694cf87b55bfc0.png


3.会话并没有断开,服务器为其分配一个新的session ID

0d0053be5cdbaf790229d255957da875.png

66f59f164b8a963a682e04174482122a.png


批注:当客户端连接集群数据库时,由于某些原因session ID被异常终端,已经配置了服务器端的故障转移,该会话并不会终端,而是服务器为其分配一个
新的session ID,继续通过当前会话为用户提供对数据库的操作。如果当前会话连接的实例宕掉,会自动去寻找备用实例。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/550466.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何关闭window10自动更新

如何关闭Windows10的自动更新? 相信很多同学在用Windows10系统的时候,经常跳出更新系统的提示。 有时自动更新的时间,恰好是我们需要急用电脑的时候,而且系统更新比较慢,等待的时间长。 甚至经常会更新失败&#xf…

分割文本_PSENet、PANNet、DBNet三个文本检测算法异同

点击蓝字关注我们这三个文本检测算法都是segment base算法,通过由下而上的方式,先对text进行segment,然后再根据segment text,计算出text的instancePSENet近年来,自然场景文本检测在场景理解、产品识别、自动驾驶和目标…

maven安装过程以及手动添加jar包到本地仓库

Maven安装过程及手动添加JAR包到本地仓库详解 https://blog.csdn.net/niityzu/article/details/50997544 分类: Maven(1) 版权声明:本文为博主原创文章,未经博主允许不得转载。 一、Maven介绍 Maven是一个项目构建…

怎么把文件放到docker容器里

1、查找所有容器id:docker ps -a 2、查找容器长ID:docker inspect -f {{.ID}} tomcat-container-id 3、拷贝本地文件到容器: 命令:docker cp 本地路径 容器长ID:容器路径 例子:docker cp /home/work/FDFS/1.jpg dfba3…

lisp医院化验系统_医院智能导视系统

众所周知,“看病难”已经成为了全民关注的社会问题,这一问题也不是一朝一夕能解决的。我司研发的医院智能导视系统,避免就医过程中不必要的时间浪费,大大有效的提高就医效率。医院智能导视系统为了有序推进医院信息化工作&#xf…

的环境下 qt 运行在_Ubuntu16.04环境下运行vins mono(环境配置及编译)之ROS kinetic的安装...

所需环境:ubuntu16.04ROS kineticopencv 3.3.1eigen3.3.3ceres solver 1.141.ROS Kinetic 的安装(1)设置sources.listsudo sh -c echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.l…

db2 jdbc驱动参数_JDBC详细整理(一)

一.什么是JDBCJDBC(Java DataBase Connectivity)就是Java数据库连接,说白了就是用Java语言来操作数据库。原来我们操作数据库是在控制台使用SQL语句来操作数据库,JDBC是用Java语言向数据库发送SQL语句。二.JDBC原理早期SUN公司的天才们想编写一套可以连接…

生物学专业_江南大学微生物学(发酵)20002008历年考研专业课真题汇编

说明 1. 海量考研真题免费发布,欢迎关注公众号『守望考研』;2. 想获取本文对应的PDF文档以便打印使用,欢迎关注公众号了解领取方法;PS: PDF版文档清晰度更高、水印更小南开大学861微生物学1997-2001、2003-2011历年考研专业课真题…

error: ‘XXX‘ is defined but never used (no-unused-vars)报错的解决方案

错误原因 我的项目安装了eslint规范,ESLint 是在 ECMAScript/JavaScript 代码中识别和报告模式匹配的工具,它的目标是保证代码的一致性和避免错误 解决方案 一、在package.json文件内加入如下代码:然后保存重启项目。 "rules":…

平流式初沉池贮砂斗计算_?初沉池、二沉池的作用与区别-亨孚科技

初沉池的主要作用如下:1、去除沉淀物或浮游物,减轻后续处理设施的负荷。使细小的固体凝聚成大粒子,强化固液分离效果。3.它对胶体物质有一定的吸附和去除作用。4、初沉池在一定程度上起调节池塘的作用,对水质发挥一定的均质效应。5.一些废水处…

Navicat连接Oracle数据库失败,提示无效的用户名和密码(Invalid username and password)

1、Navicat是一款非常好用的数据库管理工具,可是一段时间没有使用,突然发现之前建立的Oracle连接无法打开,提示要输入旧密码和新密码以及确认新密码,在Navicat管理工具中连接之前超过180天的Oracle数据库,连接的时候&a…

把关与服务的关系_泉州代做投标书-电子标书值得信赖 - 泉州广告服务

此外,土壤资源对于人们的重要性不言而喻。为了推行土壤环境攻坚治理,江苏省共布设国控点位个,其中,基础点位个,风险点位个,背景点位个,为开展土壤污染调查奠定基础。这些地区监测站点的成功铺设…

口腔取模过程及注意事项_取模变形?教你三种方法,轻松防止取模变形!

点击查看更多精彩内容关键词:取模;适合人群:口腔修复科医生;共1497字 阅读4分钟在牙体修复中,一个完美的修复体是需要一个精确的模型和医生与技师之间的完美配合才能做到的。而因为模型变形出现返工的情况很多&#xf…

思科isis路由的优先级_华为 路由双点双向引入

点击上方蓝字关注我们哈喽,大家好!我是艺博东 ,是一个思科出身、专注于华为的网工;好了,话不多说,我们直接进入正题。双点双向重发布(OSPF、IS-IS)文章目录一、拓扑二、底层配置三、双点双向一、拓扑二、底…

python 根据名称获取pid_【Python学习笔记】76、常用第三方模块psutil

用Python来编写脚本简化日常的运维工作是Python的一个重要用途。在Linux下,有许多系统命令可以让我们时刻监控系统运行的状态,如ps,top,free等等。要获取这些系统信息,Python可以通过subprocess模块调用并获取结果。但…

需要单机还是集群部署_单机、分布式、集群的区别与联系

一、单机结构一个系统业务量很小的时候所有的代码都放在一个项目中,然后这个项目部署在一台服务器上就好了,整个项目所有的服务都由这台服务器提供。这就是单机结构。单机结构的缺点是显而易见的,单机的处理能力毕竟是有限的,当你…

拖动卡顿_四招教你解决PS软件卡顿问题!

你是不是经常会遇到这样的问题?刚装的Ps速度很快,使用一段时间以后发现越来越卡,时不时还会死机崩溃?大多数人遇到这种问题都是选择重装软件,或者重做系统,耗时耗力不说,过不了多久又会出现同样…

极光实时监听怎么调用_源码分析 Sentinel 实时数据采集实现原理(图文并茂)

本篇将重点关注 Sentienl 实时数据收集,即 Sentienl 具体是如何收集调用信息,以此来判断是否需要触发限流或熔断。Sentienl 实时数据收集的入口类为 StatisticSlot。我们先简单来看一下 StatisticSlot 该类的注释,来看一下该类的整体定位。St…

文字描边_6招迅速做出炫酷PPT字效!|10分钟干货第二期(文字描边)

不点蓝字,我们哪来故事?艺术让一切枯燥变有趣 作者 | 易焦躁星人微信号 | wyx19911003每周一篇,干货满满建议收藏,慢慢实践PPT酷炫【字效】第二弹来啦!平时做PPT无从下手没灵感?根本原因还对功能实践的不够…

华为手机鸿蒙系统怎么样_华为自研操作系统“鸿蒙”已用于华为手机

重要信息有网友近日在社交网络上曝光了华为的自研操作系统,命名为“鸿蒙”,其已用于华为手机中(安全部分)。来自上海交通大学的一份PPT演示照片,图中显示,某教授领导华为操作系统团队开发了自主产权操作系统——鸿蒙。根据PPT描述…