积累了几次Oracle客户端连接故障,做下总结。

文章目录

  • 1、案例
    • 案例1:客户端连接报错ORA-12514
    • 案例2:客户端连接报错ORA-28547
    • 案例3:客户端连接报错:Got minus one from a read call
    • 案例4:客户端连接报错:ORA-12518
    • 案例5:客户端连接报错:ORA-28040
  • 2、总结

1、案例

案例1:客户端连接报错ORA-12514

项目场景
业务工程人员使用PLSQL工具,连接部署在Windows系统上的Oracle 11gR2单机数据库,报错ORA-12514。
分析排查
(1)错误代码含义
ORA-12514 是指监听程序无法识别连接描述符中请求的服务。
(2)错误可能性
监听程序可能挂了,也可能是listener.ora文件中的配置有问题。
(3)错误排查

登录数据库服务器,cmd窗口执行 “lsnrctl status” 命令,发现监听没有启动。于是执行 “lsnrctl start”命令启动监听,启动后注意到 “UNKNOWN” 标识——静态监听,说明其依赖listener.ora文件配置。

继续尝试连接,依然报错ORA-12514。

考虑到是静态监听模式,此时高度怀疑listener.ora文件配置有误;检查发现listener.ora文件中并没有关于目标实例的配置信息,于是将目标实例信息补充到文件中。

win11glistener.png

调整完listener.ora文件,重启监听;再次尝试连接,连接成功。
错误复盘
这个错误是比较基础的:listener.ora文件配置缺少目标实例信息、监听未启动。和现场沟通后得知是业务工程人员自己部署用来测试的,所以并未注意这两个细节。

案例2:客户端连接报错ORA-28547

项目场景
业务工程人员使用PLSQL工具,连接部署在Windows系统上的Oracle 11gR2单机数据库,报错ORA-28547。

win11gora28547.png
分析排查
(1)错误代码含义
ORA-28547 是指客户端与服务器通信失败。
(2)错误可能性
由于是第一次看到这个错误代码,也已经排查过监听配置文件、监听程序无异常。所以网上查阅多篇资料,梳理总结如下:

1、配置文件中存在问题;
2、环境问题:未安装Oracle客户端、防火墙未放行1521端口;
3、数据库连接工具的OCI版本与目标数据库不匹配;

(3)错误排查

1、listener.ora文件、tnsnames.ora文件都已经排查过,未有写错的服务名和路径。
2、防火墙关闭,且在同一网段,不会是网络问题;客户端也已安装,且环境变量正确。
3、OCI版本也无误

似乎无计可施了。终于在对比检查了多次listener.ora文件后,发现某行多了个括号,格式发生错误。于是删除多余括号,再次尝试连接,连接成功。

错误复盘
这次的错误同样基础,但却十分隐蔽:listener.ora文件格式错误,仅仅只是多了个括号。这是我自己在listener.ora文件中 手敲 监听配置信息造成的错误,也再次提醒如果需要手工调整监听配置文件,最好是从其他数据库配置文件或者samples模版文件中拷贝修改,避免失误。

案例3:客户端连接报错:Got minus one from a read call

项目场景
业务工程人员使用DBever工具连接 19C数据库时,报错:Got minus one from a read call,连接失败。

Got minus.png
分析排查
(1)错误含义
“Got minus one from a read call” :读取call的结果是-1。字面上看不出什么,所以查看告警日志和监听日志;其中告警日志无异常,监听日志中发现如下报错:
listenlog.png
(2)错误可能性
监听日志中显示TNS-12518, TNS-12547, TNS-12560, TNS-00517的组合报错。尝试将这个错误抛给deepseek,给出了如下原因:

1、内存资源不足
2、权限问题
3、操作系统bug
4、资源限制(/etc/security/limits.conf配置的资源限制参数过低)
5、网络配置问题

不得不说,deepseek挺强大的,将所有的可能性都列举了出来。但是它似乎只是联网汇总分析了网上的文章,给出的每一种可能性权重都是一样的,我抓不住它给出的重点,而且很多地方只是浅尝辄止。
(3)错误排查

系统内存资源、Oracle相关目录权限、资源限制参数都很快检查完了;至于操作系统bug,我没想着排查,因为太高级我不会…。并且尝试使用sqlplus连接,也连接不上,所以也排除客户端驱动问题。

最后我还是将目标瞄向监听配置文件,但是服务名、路径、主机名等每一个参数,都没有问题;格式也没问题。

于是我打开了另外一台数据库的监听配置文件仔细对比,在对比了非常多次之后,发现在listener.ora文件中,ORACLE_HOME的路径,末尾处有个 “/” 。我不知道是不是它的问题,但也将其删除,重启监听,再次尝试连接,连接成功。

错误复盘
数据库使用的是静态监听,完全依赖监听配置文件。部署这台数据库的DBA在手动配置监听文件时,不知道在listener.ora文件中ORACLE_HOME路径末尾不能有 “/”。这是个细节问题,很隐蔽,但却很关键。

案例4:客户端连接报错:ORA-12518

项目场景
业务工程师反馈某备库连接不上,批处理报错。使用PLSQL登录显示ORA-12518。
12518.png
分析排查
(1)错误含义
ORA-12518:监听收到了客户端的连接请求,但在将这个连接请求移交给数据库服务进程的时候失败了。
(2)错误可能性
这个错误的原因可能是操作系统内存资源告警、资源限制参数过低且已达到上限、数据库的process/session达到上限;严重的话也有可能是实例出现问题,PGA中的会话全局区不能再分配连接。
(3)错误排查
我并没有去检查操作系统内存资源和资源限制参数。直接去检查了process和session资源,发现资源已耗尽;调整完process后,问题解决。
错误复盘
此次连接错误,有两个原因:一是process参数本身设置不合理,才500;二是业务某个批处理未设置连接池,导致连接数很快消耗完。这两个错误都是可以提前预见和规避的。

案例5:客户端连接报错:ORA-28040

项目场景
低版本的JDBC驱动在连接Oracle 19C时,会遇到ORA-28040错误。
解决方案
1、可以选择升级JDBC驱动。
2、临时修改sqlnet.ora文件,向下兼容JDBC
将以下参数加入sqlnet.ora文件,如果没有该文件,需要手动创建。

可以执行lsnrctl status命令查看监听配置目录。

SQLNET.ALLOWED_LOGON_VERSION_SERVER=8  # 允许最低协议版本为 8(兼容 10g/11g)
SQLNET.ALLOWED_LOGON_VERSION_CLIENT=8

在调整完sqlnet.ora文件后,需要重启监听,配置才可生效。

2、总结

通过以上案例,可以发现:大部分连接问题都是因为监听配置文件有误,此外常见的还有数据库资源限制问题。当发生连接故障时,我们可能记不住那么多不同的错误代码,但是可以优先从配置文件、数据库资源方面着手排查;这也是提醒我们在手动操作配置文件时务必要细心。

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

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

相关文章

V-USB USB设备模拟原理分析

V-USB USB设备模拟原理分析 通过分析V-USB项目的核心文件,详细解释这个项目是如何在AVR微控制器上模拟USB设备的: 1. 整体架构 V-USB是一个纯软件实现的USB低速设备驱动,主要由以下几个核心文件组成: usbdrv.c : USB协议栈的C语言…

kafka3.6下载安装(传统架构/KRaft模式)+实例测试

知识补充: Kafka 和 ZooKeeper 的关系可以用 “协作依赖” 来概括。在 Kafka 的早期版本(Kafka 2.8.0 之前)中,ZooKeeper 是 Kafka 的核心依赖,用于管理集群元数据、协调 Broker 和 Controller 选举等关键功能。但从 …

华控智能产品特点——产品生态全景与场景化创新

公司构建 “3X”产品战略,以三大核心场景为基础持续拓展技术外延: 1. 智能安防产品线军工级指纹枪盒:采用6061-T6航空铝材,内嵌震动报警模块,非法开箱触发90dB警鸣。为军工企业定制的双人认证版本需两位授权人员同时验…

爬虫核心原理与入门技巧分析

一、爬虫核心原理:模拟人类浏览的“自动化工具” 简单来说,网络爬虫(Web Crawler)是一种按照一定规则,自动抓取互联网信息的程序或脚本。其核心原理可以类比人类浏览网页的过程,只不过将手动操作转化为了代…

spring-cloud微服务部署-feign服务间调用

1 准备工作 需要安装并启动nacos&#xff0c;作为服务注册中心。地址&#xff1a;https://nacos.io/ 2 项目结构 parent的pom.xml声明依赖&#xff1a; <dependencyManagement><dependencies><dependency><groupId>org.springframework.boot</gr…

IDEA高效开发:Database Navigator插件安装与核心使用指南

目录 1.前言 2.正文 2.1安装流程 2.1.1IDE内部安装 2.1.2手动下载安装 ⚠️ 避坑指南 2.2使用教程 2.2.1连接数据库 2.2.2查看数据库/表 2.2.3查询数据 2.2.4修改表结构 2.2.5生成代码 2.2.6常见故障排除 3.小结 1.前言 “作为Java开发者&#xff0c;日常与数据…

Maven私服仓库,发布jar到私服仓库,依赖的版本号如何设置,规范是什么

Maven私服仓库&#xff0c;发布jar到私服仓库&#xff0c;依赖的版本号如何设置&#xff0c;规范是什么

量子卷积神经网络:量子计算与深度学习的融合革命

引言&#xff1a;当卷积神经网络遇上量子计算在人工智能与量子计算双重浪潮的交汇处&#xff0c;量子卷积神经网络&#xff08;Quantum Convolutional Neural Network, QCNN&#xff09;正成为突破经典算力瓶颈的关键技术。传统卷积神经网络&#xff08;CNN&#xff09;在图像识…

线程(三) linux 同步

目录 概念补充 条件变量 操作 例:多线程抢票 封装 生产者消费者模型 生产者和消费者之间的关系 BlockQueue(阻塞队列) 单生产单消费 信号量 简介 操作 多生产者多消费者RingQueue(环形队列)代码 sem封装 信号量与锁 小知识 概念补充 同步:在保证数据安全的前…

Eclipse 生成 jar 包

Eclipse 生成 jar 包 引言 Eclipse 是一款功能强大的集成开发环境&#xff08;IDE&#xff09;&#xff0c;广泛应用于 Java 开发领域。在 Java 开发过程中&#xff0c;将源代码编译成可执行的 jar 包是常见的需求。本文将详细介绍在 Eclipse 中生成 jar 包的方法&#xff0c;包…

kafka--基础知识点--0

kafka 架构 https://cloud.tencent.com/developer/article/2307892 19张图 生产者架构 消息的磁盘存储文件结构 https://cloud.tencent.com/developer/article/2307892 19张图 produce消息分区策略 kafka–基础知识点–5–生产者分区策略 ISR、OSR、AR 是什么&#xff1…

替换ngnix ssl 证书

1. 阿里云数字证书管理服务 -》SSL 证书管理 -》个人测试证书&#xff08;原免费证书&#xff09;-》查找相应域名的证书/新建证书&#xff0c;申请 -》下载证书&#xff0c;如果是ngnix服务器&#xff0c;就下载pem/key格式2.远程连接服务器a.nginx -t :查看ngnix 配置文件在哪…

rabbitmq ACK

在消息队列&#xff08;如 RabbitMQ&#xff09;中&#xff0c;**ACK&#xff08;Acknowledgement&#xff09;是消息确认机制**&#xff0c;用于确保消息被消费者成功处理。其核心作用是解决以下问题&#xff1a;mermaid复制代码导出svg&#x1f4cc; ACK 的两种模式1. 自动确…

性能远超Spring Cloud Gateway!Apache ShenYu如何重新定义API网关!

Apache ShenYu Apache ShenYu是一个异步的&#xff0c;高性能的&#xff0c;跨语言的&#xff0c;响应式的 API 网关。 特点 • 代理&#xff1a;支持Apache Dubbo&#xff0c;Spring Cloud&#xff0c;gRPC&#xff0c;Motan&#xff0c;SOFA&#xff0c;TARS&#xff0c;We…

质变科技亮相可信数据库发展大会,参编《数据库发展研究报告2025》

数据库作为支撑数据存储与计算的关键载体&#xff0c;在数据要素时代的重要性愈发凸显。过去一年&#xff0c;全球数据库新技术、新业态、新模式不断涌现&#xff1b;我国数据库应用创新于重点行业快速推进。随着人工智能技术深刻变革&#xff0c;数据库与AI融合趋势愈发明显。…

LVS(Linux Virtual Server)详细笔记(理论篇)

一.详解1. LVS概述LVS&#xff08;Linux Virtual Server&#xff09;是由章文嵩博士发起的开源负载均衡项目&#xff0c;通过在Linux内核中实现高性能四层交换能力&#xff0c;将多台物理服务器组织成单一虚拟服务。它能够处理百万级并发连接&#xff0c;同时保持线性扩展能力&…

Oracle Data Pump 导入冲突解决

问题场景 使用 impdp 导入数据时遇到"对象已存在"错误&#xff0c;导致导入失败。 核心解决方案 1. TABLE_EXISTS_ACTION 参数 impdp username/passworddatabase \ directoryDATA_PUMP_DIR \ dumpfileyour_dump_file.dmp \ TABLE_EXISTS_ACTIONREPLACE作用&#xff1…

汽车免拆诊断案例 | 2015款进口起亚索兰托L车漏电

故障现象 一辆2015款进口起亚索兰托L车&#xff0c;搭载D4HB发动机&#xff0c;累计行驶里程约为15万km。车主反映&#xff0c;该车停放2天左右就因蓄电池亏电而无法起动&#xff0c;更换过蓄电池&#xff0c;但故障依旧&#xff0c;于是将车开至我厂检修。故障诊断 接车后用…

mysql复制延迟如何处理

一、复制延迟的原因主库增删改并发大大表在做DDL从库备份导致延迟大事务从库机器配置差二、怎样判断延迟使用 SHOW SLAVE STATUS 命令Seconds_Behind_Master&#xff1a;表示从库落后主库的秒数&#xff08;若为 NULL&#xff0c;可能复制线程已停止&#xff09;对比位点字段名…

HertzBeat 监控 SpringBoot 使用案例

HertzBeat 监控 SpringBoot 使用案例 在云原生时代&#xff0c;Spring Boot应用的监控与可视化已然成为运维体系的核心环节&#xff0c;实时监控应用性能是保障系统稳定性的关键。 这篇文章将结合 HertzBeat 实现从指标采集、可视化到告警的一体化解决方案&#xff0c;并展示…