故障分析:RAC环境下ORA-12545连接错误

崔华,网名 dbsnake

Oracle ACE Director,ACOUG 核心专家

分享一则由于SCAN IP导致的连接故障

11gR2 RAC两节点的环境,我本机用SCAN VIP连的时候发现连不上了,不断尝试多次,始终报同样的错误ORA-12545:

C:\Documents and Settings\cuihua>sqlplus /nolog SQL*Plus: Release 11.2.0.1.0 Production on 星期四 5月 3 10:53:00 2012 Copyright (c) 1982, 2010, Oracle. All rights reserved.

SQL> conn sys/oracle@nbsdev as sysdba;

ERROR: ORA-12545: 因目标主机或对象不存在, 连接失败

nbsdev在我本机的tnsnames.ora中的配置为:

nbsdev = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 10.1.15.86)(PORT = 1522)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = NBSDEV) ) )

虽然连不上,但tnsping可以ping通,因为tnsping只检查IP地址和端口是否能连通,至于数据库实例状态,监听注册了哪些服务这些,它是不检查的:

C:\Documents and Settings\cuihua>tnsping nbsdev TNS Ping Utility for 32-bit Windows: Version 11.2.0.1.0 – Production on 03-5月 – 2012 10:43:00 Copyright (c) 1997, 2010, Oracle. All rights reserved. 已使用的参数文件: C:\app\cuihua\product\11.2.0\dbhome_1\network\admin\sqlnet.ora 已使用 TNSNAMES 适配器来解析别名 尝试连接 (DESCRIPTION = (FAILOVER=ON) (ADDRESS = (PROTOCOL = TCP)(HOST = 10.1.15.86)(PORT = 1522)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = NBSDEV))) OK (30 毫秒)

如下是NBSDEV在database server端的相关设置:

grid:/nbsdu01/app/11.2/network/admin>cat /etc/hosts # @(#)47 1.2 src/bos/usr/sbin/netstart/hosts, cmdnet, bos61D, d2007_49A2 10/1/07 13:57:52 省略显示相关内容…… #RAC 10.1.15.64 P550-05-LA 10.1.15.84 P550-05-LA-vip 9.2.1.64 P550-05-LA-priv 10.1.15.65 P550-05-LB 10.1.15.85 P550-05-LB-vip 9.2.1.65 P550-05-LB-priv 10.1.15.86 nbsdev-scan

现在的状况是看起来一切正常,但就是连不上。

我们来仔细检查一下SCAN Listener的状况:

从上述结果里我们可以看到,现在节点2上面的NBSDEV2的Handler的状态为blocked且HOST地址错了――这里HOST地址明显应该是10.1.15.85。

我们登陆一下节点2,看一下local listener的状态:

从结果里可以看到,实例NBSDEV2的动态注册并没有成功,只有ASM实例,这个不对。

我们重启一下节点2上的local listener:

重启完后现在的状态就对了:

再次回到节点1,现在我们再来看一下SCAN Listener的状态:

从结果里我们可以看到,现在NBSDEV2的Handler的状态已经变成了ready且HOST地址也变成了10.1.15.85。

再次在我本机上尝试连接NBSDEV,刚才的报错ORA-12545已不复存在,我们又可以连上了:

SQL> conn sys/oracle@nbsdev as sysdba;

已连接。

从整个诊断过程来看,在用SCAN VIP连接的时候,Oracle似乎是在我反复尝试的情况下,始终都将我的连接redirect到节点2上,又因为节点2在SCAN Listener上注册的HOST地址不对,所以Oracle这里报错“ORA-12545: 因目标主机或对象不存在, 连接失败”,这个跟我心目中SCAN VIP的原理不太一样。节点2有问题,你就让我连节点1好了,干嘛要在我反复尝试的情况下始终报错ORA-12545呢?

现在我们手工把节点2上的local listener停掉:

再次回到节点1,查看一下SCAN Listener的状态:

从上述结果里我们可以看到,当我把节点2上的local listener停掉后,节点1上SCAN Listener中节点2对应的Handler的状态已经变成了blocked,但此时HOST地址是对的。

从如下结果我们可以看到——虽然节点1上SCAN Listener中节点2对应的Handler的状态已经变成了blocked,但因为HOST地址是对的,所以当我在本机以SCAN VIP连接的时候还是可以连上,Oracle这里正确的将我的连接redirect到了节点1上:

----the end

原文发布于微信公众号 - 数据和云(OraNews)

原文发表时间:2016-09-07

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏大魏分享(微信公众号:david-share)

厉害了!全CI/CD工具链的实现 | 基于OCP离线: Openshift3.9学习系列第五篇

干货巨献:Openshift3.9的网络管理大全.加长篇---Openshift3.9学习系列第二篇

41540
来自专栏康怀帅的专栏

CoreOS 容器 Rkt 简单介绍

由于 Docker 已经成为事实上的容器老大,这里暂且将 rkt 内容放入 docker 文件夹。哈哈 官方网站:https://coreos.com/rkt/...

52070
来自专栏运维

Openstack G版本 Ubuntu13.04三节点实验记录

本篇文档参考了官网文档(http://docs.openstack.org/),github(https://github.com/mseknibilel/Op...

15420
来自专栏散尽浮华

记录一次redis cluster集群故障-运维笔记

公司的一个系统业务出现故障,提示查询redis失败。查询相关日志,分析过程记录如下:

55950
来自专栏小狼的世界

Kubernetes基础:查看状态、管理服务

在Kubernetes中创建一个Deployment 部署就会在Node上创建一个Pod,Pod是Kubernetes中对于一组容器以及与容器相关的资源的集合。...

51710
来自专栏轻量级微服务

Kubernetes Service & LB & Networking :Services

使用标签选择器创建服务,Service 直接关联 Pod,示例:部署 Mysql (细节见文末附录1),再创建服务:

16540
来自专栏bboysoul

记载一次删除mysql的默认数据库mysql的过程

今天终于尝到了什么叫删库跑路,妈的真的悲剧,早上想在树莓派里安装个wordpress,想放点街舞视频给大家分享一下,突然发现数据库里面还有一个以前的论坛数据库,...

9630
来自专栏云计算

如何使用Docker部署微服务

微服务是用于构建大规模应用程序的越来越流行的体系结构。应用程序不是使用单一的单一代码库,而是分解为一组称为微服务的较小组件。这种方法提供了多种好处,包括扩展单个...

82520
来自专栏大魏分享(微信公众号:david-share)

从一张图看Devops全流程

一、持续交付工具链全图 ? 上图源自网络。上图很清晰地列出了CD几个阶段使用的工具。 CD的工具链很长,但并不是每个模块所有工具都那么流行;换言之,我们在每个模...

1.7K90
来自专栏康怀帅的专栏

Docker Compose version 3 使用详解

Define application stacks built using multiple containers, services, and swarm c...

7.6K60

扫码关注云+社区

领取腾讯云代金券