暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

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

崔华 2016-09-07
587


崔华,网名 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


如何加入"云和恩墨大讲堂"微信群

搜索 盖国强(Eygle) :eyygle,或者扫描下面二维码,备注:云和恩墨大讲堂,即可入群。每周与千人共享免费技术分享,与讲师在线讨论。


近期文章

巧用触发器,实现DDL监控

Oracle中实现split相关方法总结

巧用SQL:oracle pl/sql split函数

AMDU数据抽取恢复

Null is Not Null引发的成本误区

Cache Buffer Chain Latch等待事件

资源下载

(OraNews)回复关键字获取

2016DTCC, 2016数据库大会PPT;

DBALife,"DBA的一天"精品海报大图;

12cArch,“Oracle 12c体系结构”精品海报;

DBA01,《Oracle DBA手记》第一本下载;

YunHe“云和恩墨大讲堂”案例文档下载;


文章转载自崔华,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论