为什么Oracle19c客户端连接11g服务器会提示ORA-28040?

风敏吖_8277

风敏吖_8277

2026-09-09

761人浏览

原创

ORA-28040只发生在低版本客户端连接高版本服务器(如11g客户端连19c服务器),19c客户端连11g服务器不会触发该错误;因11g服务器无SQLNET.ALLOWED_LOGON_VERSION_SERVER参数,不校验协议匹配性,仅检查密码哈希格式、账户状态等基础项。

为什么oracle19c客户端连接11g服务器会提示ora-28040?

Oracle 19c 客户端连接 11g 服务器报 ORA-28040,根本不是“版本太高连不上老库”,而是方向反了——ORA-28040 只发生在“低版本客户端 → 高版本服务器”场景,19c 客户端连 11g 服务器时绝不会触发这个错误。你看到的报错,大概率是搞错了客户端/服务器角色,或日志抄错了。

确认谁是客户端、谁是服务器

很多人凭直觉认为“19c 是新东西,肯定更强势”,但 Oracle 的认证协议控制逻辑是单向的:SQLNET.ALLOWED_LOGON_VERSION_SERVER 管的是“谁可以连进来”,SQLNET.ALLOWED_LOGON_VERSION_CLIENT 管的是“我能连出去找谁”。19c 客户端本身不读 sqlnet.ora(除非用 OCI 模式且显式配置了本地 sqlnet.ora),它只按自己驱动内建规则发起协商。

  • 如果你用的是 JDBC Thin(绝大多数 Java 应用、Kettle、DBeaver 默认模式),那 19c 客户端根本不受服务端 sqlnet.ora 影响,也不会因协议问题被 11g 服务器拒绝
  • 如果你用的是 SQL*Plus 或 PL/SQL Developer 的 OCI 模式,并且该工具指向了 19c 的 instantclient,那它作为客户端,会尝试用 19c 支持的高协议版本去连 11g 服务器——此时真正该报的错是 ORA-28040 的反向变体,但 Oracle 11g 根本不校验这个参数,通常直接报 ORA-12514 或静默断连
  • 真实出现 ORA-28040 的日志堆栈里,T4CTTIoauthenticate.receiveOsesskey 这类调用一定出现在客户端堆栈中,且上层是 oracle.jdbc.driver. 包 —— 这说明是 JDBC 客户端在跟服务器握手失败,服务器必然是 19c 或更高

为什么 11g 服务器不可能抛出 ORA-28040

Oracle 11g 没有 SQLNET.ALLOWED_LOGON_VERSION_SERVER 这个参数,它的认证协议控制逻辑是宽松的:只要密码哈希格式能识别(比如 10G、11G),就放行。它既不会主动拒绝“太新”的客户端,也没有能力判断对方协议是否“匹配”。

QuantOracle
QuantOracle

63个确定性量化金融计算器 + 10个通过MCP的复合工作流。期权定价、Greeks、奇异衍生品、风险指标、投资组合优化……

下载
  • 11g 服务器收到 19c 客户端的登录请求时,只检查用户名密码是否正确、账户是否解锁、资源限制是否超限,不会校验“你用的是不是 TLSv1.2”或“你的认证密钥交换是不是 SHA-256”
  • 如果真连不上,常见原因是:监听器没起来、服务名写错、防火墙拦截、用户被锁、密码过期,或者 JDBC URL 里用了 19c 才支持的语法(如 oracle.net.authentication_services=(KERBEROS5))
  • ORA-28040 在 Oracle 官方文档中明确定义为 “The authentication protocol requested by the client is not supported by the server”,即“客户端要求的协议,服务器不支持”——11g 服务器不支持的协议,19c 客户端根本不会主动提

排查建议:先看日志源头和堆栈

别急着改配置,先确认错误到底从哪来:

  • 打开客户端日志(JDBC 加 ?oracle.jdbc.Trace=true,SQL*Plus 开 set echo on + sqlnet.ora 开 trace),看第一行报错是不是真的 ORA-28040
  • 检查堆栈最顶端类名:如果是 oracle.jdbc.driver. 开头,说明是 JDBC 客户端在报错,服务器一定是高版本;如果是 oracle.net. 或 tnslsnr 相关,才可能是监听器侧问题
  • 用 tnsping 测试网络层通不通,再用 sqlplus /@tns_alias 测试基础连接,排除 TNS 配置问题
  • 执行 SELECT * FROM v$version; 在目标数据库里确认实际版本——有时候 DBA 告诉你是 11g,结果其实是 19c 的 PDB,或用了 11g 的客户端连了 19c 的 CDB

真正容易被忽略的是:报错截图或日志复制时漏掉了关键前缀,比如把另一台机器上刚发生的 19c 服务器报错,误认为是当前 11g 连接的错误。协议协商失败这事,永远发生在“说话更强势”的那一端——而 11g 服务器,在认证这件事上,从来就不强势。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

oracle

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
服务器是什么
服务器是什么

服务器是一种计算机硬件设备或软件程序,它具有强大的计算和存储能力,用请求、存储数据和提供服务。它在互联网中着关重要的作用,为用户提供各种服务和资源。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.15

457

5

连接apple id服务器时出错
连接apple id服务器时出错

连接apple id服务器时出错的原因包括网络连接问题、服务器问题、Apple ID账户问题、设备问题、防火墙或安全软件问题、时间和日期设置问题、Apple服务器维护等。本专题为大家提供apple id相关的文章、下载、课程内容,供大家免费下载体验。

2023.09.08

960

5

搭建互联网服务器
搭建互联网服务器

搭建互联网服务器需要:1、选择合适的硬件和操作系统,第一步是选择合适的硬件和操作系统;2、安装和配置操作系统,是搭建互联网服务器的关键步骤;3、安装和配置服务器软件,是搭建互联网服务器的下一步,常见的服务器软件包括Apache、Nginx、Tomcat等;4、配置防火墙和安全性,是搭建互联网服务器的重要步骤;5、域名解析和配置,是搭建互联网服务器的最后一步。

2023.09.19

3272

5

如何查看服务器状态
如何查看服务器状态

查看服务器状态的方法有使用命令行工具、图形界面工具、监控工具、日志文件和远程管理工具等。本专题为大家提供服务器状态相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.09

1076

5

服务器域名转接慢怎么解决
服务器域名转接慢怎么解决

服务器域名转接慢的解决办法有DNS优化、服务器优化、CDN加速、前端优化和网络优化等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.17

969

5

服务器评测软件
服务器评测软件

服务器评测软件有PassMark Software、CPU-Z、GPU-Z、CrystalDiskMark、IOmeter、JMeter、LoadRunner、Apache Bench等等。详细介绍:1、PassMark Software是一款综合性的服务器性能测试软件,可以评估服务器在各种负载条件下的性能;2、CPU-Z是一款可以提供服务器CPU详细信息的软件等等。

2023.10.17

514

3

如何开启TFTP服务器
如何开启TFTP服务器

开启TFTP服务器的步骤包括选择TFTP服务器软件、下载和安装软件、配置TFTP服务器以及启动和测试服务器等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.18

3016

4

服务器负载不兼容怎么解决
服务器负载不兼容怎么解决

解决方法:1、增加服务器资源;2、负载均衡;3、优化应用程序;4、增加缓存机制;5、分布式架构;6、限流和熔断;7、自动化扩容。想知道更详细服务器负载不兼容的解决方法,可以访问本专题下面的文章。

2023.10.20

5652

4

宽带如何接入服务器
宽带如何接入服务器

宽带接入服务器的方法有ADSL宽带接入服务器、光纤接入服务器、无线接入服务器和以太网接入服务器等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.20

867

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程