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去解析数据库服务器的主机名

 

 

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

va-Q-tec实现温度敏感产品运输过程质量控制温控无忧

摘要:温度敏感产品运输对供应链全流程的温度质量要求较高,往往需要借助特殊的温湿度监测技术产品。va-Q-tec与虹科Comet合作,采用虹科Comet的U系列温度记录仪,为集装箱运输过程提供完整的温控包装解决方案。 一、客户背景 va-Q-…

算法通关村第十二关-白银挑战字符串经典题目

大家好我是苏麟 , 今天带来字符串相关的题目 . 大纲 反转问题字符串反转K个一组反转仅仅反转字母反转字符串中的单词 反转问题 字符串反转 描述 : 编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 s的形式给出。 题目 : LeetCode 344. 反转…

【PPspliT】ppt转pdf-保留过渡动画

网址 http://www.maxonthenet.altervista.org/ppsplit.php 下载安装 使用 再次打开ppt,就能在上方的选项栏里头看到了:

【Unity】接入MAX聚合广告SDK Applovin + GoogleAdmob

版本: Unity:2019.4.35f1gradle plugin: 4.2.0 (实际要7.0 对应build_tools:34.0.0) gradle: 6.7.1 (实际要7.0 对应build_tools:34.0.0) jdk: 1.8.0_241build_tools: 34.0.0 ndk: android-ndk-r19 文档: 6.0.1(Andro…

使用宝塔安装Alist

废话不多说,直接上教程,根据我的步骤一步一步来,肯定可以成功! 我这边使用一键安装的时候,一致报错,提示证书过期,无奈我就开始了手动安装,下面的教程也是手动安装的教程 首先&…

RabbitMQ安装说明

注意: 本次安装以 CentOS 7为例 1、 准备软件 erlang 18.3 1.el7.centos.x86_64.rpm socat 1.7.3.2 5.el7.lux.x86_64.rpm rabbitmq server 3.6.5 1.noarch.rpm 2、安装Erlang rpm -ivh erlang-18.3-1.el7.centos.x86_64.rpm 3.、安装RabbitMQ 安装 rpm -ivh socat-1.7.3.2-…

码云 -- 本地代码上传到码云

1. 在码云上创建远程仓库 复制远程仓库地址 2. 在本地代码上创建 git 仓库 在本地代码文件夹上,打开git 命令窗口 输入初始化命令,创建 git 仓库 git init3. 给 git 仓库添加远程仓库 继续输入 git 命令 git remote add origin 远程仓库地址4. 按 git 的…

提升性能测试效率:JMeter中的用户自定义变量!

前言 在测试过程中,我们经常会碰到测试服务地址有改动的情况,为了方便,我们会把访问地址参数化,当访问地址变化了,我们只需要把参数对应的值改动一下就可以了。 一:添加配置元件-用户定义的变量&#xff…

python命令行 引导用户填写ssh登录信息

字多不看,直接体验: 待补充 演示代码 # -*- coding:UTF-8 -*- """ author: dyy contact: douyaoyuan126.com time: 2023/11/23 9:20 file: 引导用户填写ssh接口信息.py desc: xxxxxx """# region 引入必要的依赖 impor…

腾讯云 小程序 SDK对象存储 COS使用记录,原生小程序写法。

最近做了一个项目,需求是上传文档,文档类型多种,图片,视频,文件,doc,xls,zip,txt 等等,而且文档类型可能是大文件,可能得上百兆,甚至超过1G。 腾讯云文档地址:https://c…

AI如何帮助IT领导者优化成本和降低风险

围绕AI的兴奋和好奇心-以及随之而来的可能性-让整个行业沸沸扬扬,结果不言而喻,32%的IT领导者表示,集成AI是2023年的首要任务,其次是降低安全风险(31%)和降低IT成本(29%)。 虽然在可预见的未来,AI可能是IT领导者的首要…

Navicat 技术指引 | 适用于 GaussDB 的备份与还原功能

Navicat Premium(16.2.8 Windows版或以上) 已支持对 GaussDB 主备版的管理和开发功能。它不仅具备轻松、便捷的可视化数据查看和编辑功能,还提供强大的高阶功能(如模型、结构同步、协同合作、数据迁移等),这…

【QML】StackView上层页面半透明,显示下层页面

1、 应用场景 有时候需要模拟弹窗效果,需要下层的页面半透明显示。仅仅将上层页面背景设置为透明并不能实现这个效果,下层的页面依然被覆盖。Qt帮助文档中有如下代码,经测试有效果。 2、 代码 重点标记: 下层页面需要设置这个…

三、Keil安装芯片包、下载固件库、建立STM32工程模板

目录 一、首先在Keil软件上安装好芯片包 二、下载官方固件库 三、建立基于固件库的Keil5工程模板 一、首先在Keil软件上安装好芯片包 STM32有很多系列的芯片,我们平常用的最多的是STM32F1系列的,因此安装F1系列的芯片包在我们初学时,只按照…

2023亚太杯数学建模A题思路 - 采果机器人的图像识别技术

# 1 赛题 问题A 采果机器人的图像识别技术 中国是世界上最大的苹果生产国,年产量约为3500万吨。与此同时,中国也是世 界上最大的苹果出口国,全球每两个苹果中就有一个,全球超过六分之一的苹果出口 自中国。中国提出了一带一路倡议…

Java引用和内部类

引用 引用变量 引用相当于一个 “别名”, 也可以理解成一个指针. 创建一个引用只是相当于创建了一个很小的变量, 这个变量保存了一个整数, 这个整数表示内存中的一个地址. new 出来的数组肯定是在堆上开辟的空间,那么在栈中存放的就是引用,引用存放的的就是一个对象的地址,代表…

中部A股第一城,长沙如何赢商?

文|智能相对论 作者|范柔丝 长沙的马路,都很有故事。 一条解放西路,是全国人民都争相打卡的娱乐地标;一条太平街,既承载了历史的厚重又演绎着现代的鲜活...... 但如果来到河西的桐梓坡路,风景会变得截然不同。 沿…

Javascript中的宏任务与微任务

事件循环 JavaScript 语言的一大特点就是单线程,也就是说,同一个时间只能做一件事。为了协调事件、用户交互、脚本、UI 渲染和网络处理等行为,防止主线程的不阻塞,Event Loop 的方案应用而生。Event Loop 包含两类:一…

[Linux 基础] Linux使用git上传gitee三板斧

文章目录 1、使用git1.1 安装git1.2 在Gitee上创建项目1.2.1 使用Gitee创建项目1.2.2 上传本地代码到远端仓库 1.3 git上传三板斧1.3.1 三板斧第一招:git add1.3.2 三板斧第二招:git commit1.3.3 三板斧第三招:git push 1、使用git 1.1 安装…

01 第一个C++程序:Hello, World!

系列文章目录 01 第一个C程序:Hello, World! 目录 系列文章目录 文章目录 前言 二、创建项目 三、书写代码 代码逐行解释 其它细节 总结 前言 这是c入门的第一个程序。 一、配置c环境 我们要使用visual studio创建一个新的项目时,需要安装c, 这里我没…