当前位置: 首页 > news >正文

Oracle-客户端连接报错ORA-12545问题

问题背景:

        用户在客户端服务器通过sqlplus通过scan ip登陆访问数据库时,偶尔会出现连接报错ORA-12545: Connect failed because target host or object does not exist的情况。

 

aff3937f29c256ad5ac0b58ac6ed561e.png

问题分析:

        首先,登陆到连接有问题的客户端数据库上,通过sqlplus进行多次连接测试,的确会出现用户所说的ORA-12545: Connect failed because target host or object does not exist报错现象,此外,还发现登陆成功的节点显示的实例都是节点一实例servicedb1

 

69136b021cbb425187a0493553978aa1.png

        检查数据库的listener_scan监听配置,服务servicedb下动态注册了(ready)两个实例servicedb1以及servicedb2,没有其他的配置实例

 

232033929fe40e7805eee3f78bdaf7a0.png

        接下来,获取客户端连接报错的具体trace信息,需要在客户端的服务器的sqlnet.ora里面配置跟踪参数,对客户端的连接过程进行跟踪

TRACE_LEVEL_CLIENT=16
TRACE_DIRECTORY_CLIENT=/tmp   
TRACE_UNIQUE_CLIENT=ON
DIAG_ADR_ENABLED =OFF   

        配置完跟踪参数之后,再一次通过sqlplus连接scan ip访问数据库,每一次登陆都会在/tmp目录下面生成登陆的跟踪trc文件cli_xxxx.trc ,打开发生ORA-12545:报错时的trc文件

        从trc文件里面,我们看到了发生解析主机错误(hostname lookup failure!)的主机连接地址nsc2addr: (ADDRESS=(PROTOCOL=TCP)(HOST=servicedb2)(PORT=1521))

e1745f66973a8f01b8e44c40c38f5958.png

        该地址是客户端在连接scan监听之后,返回给客户端的本地监听服务连接地址,因为scan 监听上的服务是数据库通过远程注册进去的(remote listener),客户端在连接scan监听上的服务之后,scan监听会再把负载较小节点所在的本地监听(local listener)地址返回给客户端,客户端再访问这个监听地址去连接数据库

        从这个返回报错地址nsc2addr我们可以看到里面的地址信息host返回的是主机名而不是实际的IP地址,查看客户端的/etc/hosts配置,可以看到只配置了节点一的主机名IP地址解析,并没有配置节点二的主机名IP地址解析,也没有配置dns去解析这个主机名,从而导致一旦scan 监听分配到节点二给客户端时就会出现了ORA-12545: Connect failed because target host or object does not exist的报错,而分配到节点一客户端可以连接成功,因为hosts里面有节点一的主机名IP地址解析

4a66e8d0b540d8f53c1335d8c05b9a7f.png

接下来继续分析scan监听返回的地址信息host为主机名的原因,查看数据库的scan监听的服务配置信息lsnrctl services listener_scan1

可以看到scan监听下的服务servicedb注册的实例servicedb1,servicedb2的远程服务(remote server)地址的连接信息都是直接的服务器主机名(host=servicedb1)以及(host=servicedb2),不是实际的IP地址信息,这也是为什么客户端接收到的地址nsc2addr里面不是IP地址信息的原因,因为数据库注册到scan监听服务的连接信息是主机名形式

 

dbc28c6e06e5b5ac5775ec7346b8ef3f.png

show parameter查看数据库的动态注册配置参数local listener,该参数表示实例节点所注册的本地监听地址,数据库远程注册到scan监听的服务会指向这个地址,我们可以看到由于参数local_listener的配置为空,因此数据库注册到scan监听服务的连接信息host就是默认的服务器主机名

 

c5e0a138931dab612a27ad1babf0c4e4.png

问题解决:

        1 临时解决方案,客户端的/etc/hosts里面配置数据库节点二主机的IP解析条目,需要注意的是,这个方式只是解决了该客户端的访问数据库的问题,如果其他客户端没有配置hosts或者dns去解析数据库服务器的主机名,依然会出现ORA-12545: Connect failed because target host or object does not exist的情况

        2 完整解决方案,数据库两个节点动态注册参数local_listener配置为两个节点的VIP连接信息

节点一:(ADDRESS = (PROTOCOL=TCP)(HOST=xxx.xxx.xxx.13)(PORT=1521)),

节点二:(ADDRESS = (PROTOCOL=TCP)(HOST=xxx.xxx.xxx.74)(PORT=1521))

这样返回给客户端的是IP的形式而非主机名,全部客户端就可以不用配置hosts或者dns去解析数据库服务器的主机名

 

 

 

相关文章:

  • Unity UGUI的自动布局-LayoutGroup(水平布局)组件
  • 深入了解Java中SQL优化的关键技巧与实践
  • 【迅搜03】全文检索、文档、倒排索引与分词
  • ZKP11.4 Use CI to instantiate Fiat-Shamir
  • 麒麟linux离线安装dotnet core
  • 第十九章 解读利用pytorch可视化特征图以及卷积核参数(工具)
  • Jmeter全流程性能测试实战
  • Javascript每天一道算法题(十八)——矩阵置零-中等
  • 2023年微软开源八个人工智能项目
  • linux 开发板以太网通过Ubuntu上外网方法
  • 从书籍结构体中查找定价最高的书籍
  • 一、TIDB基础
  • 个体卫生室电子处方操作流程,私人诊所用什么电子处方系统软件,佳易王诊所电子处方软件配方模板如何设置
  • redis的高可用
  • 浅谈电力设备智能无线温度检测系统
  • 2019年如何成为全栈工程师?
  • HTML中设置input等文本框为不可操作
  • java架构面试锦集:开源框架+并发+数据结构+大企必备面试题
  • java小心机(3)| 浅析finalize()
  • MySQL数据库运维之数据恢复
  • Redis中的lru算法实现
  • scrapy学习之路4(itemloder的使用)
  • SQLServer之索引简介
  • Zepto.js源码学习之二
  • 七牛云 DV OV EV SSL 证书上线,限时折扣低至 6.75 折!
  • 使用putty远程连接linux
  • Salesforce和SAP Netweaver里数据库表的元数据设计
  • 如何在招聘中考核.NET架构师
  • #微信小程序:微信小程序常见的配置传值
  • (12)Linux 常见的三种进程状态
  • (16)Reactor的测试——响应式Spring的道法术器
  • (js)循环条件满足时终止循环
  • (编译到47%失败)to be deleted
  • (蓝桥杯每日一题)平方末尾及补充(常用的字符串函数功能)
  • (论文阅读22/100)Learning a Deep Compact Image Representation for Visual Tracking
  • (强烈推荐)移动端音视频从零到上手(上)
  • (十八)用JAVA编写MP3解码器——迷你播放器
  • (转)Scala的“=”符号简介
  • (转)大道至简,职场上做人做事做管理
  • *Algs4-1.5.25随机网格的倍率测试-(未读懂题)
  • .gitignore文件设置了忽略但不生效
  • .htaccess配置常用技巧
  • .NET WebClient 类下载部分文件会错误?可能是解压缩的锅
  • .NET/C# 将一个命令行参数字符串转换为命令行参数数组 args
  • .NET/C# 使用 #if 和 Conditional 特性来按条件编译代码的不同原理和适用场景
  • .Net的DataSet直接与SQL2005交互
  • .NET构架之我见
  • .NET中winform传递参数至Url并获得返回值或文件
  • .php文件都打不开,打不开php文件怎么办
  • .py文件应该怎样打开?
  • @Autowired自动装配
  • @在php中起什么作用?
  • [ 手记 ] 关于tomcat开机启动设置问题
  • [ 隧道技术 ] 反弹shell的集中常见方式(二)bash反弹shell
  • [ 云计算 | AWS ] AI 编程助手新势力 Amazon CodeWhisperer:优势功能及实用技巧