客户端连接 12、18c 报ORA-28040和ORA-01017 的解决方法

问题描述

oracle18c 数据库已经发布,在安装Oracle 18c数据库之后,客户端目前一般还是停留在10G、11G,如果客户端工具的版本是toad、plsql在连接12c、18c就会报如下两个错误:

ORA-28040: No matching authentication protocol

ORA-01017: invalid username/password; logon denied

一、ORA-28040报错解析

按照官方说法在服务端sqlnet.ora下需要添加如下参数。

SQLNET.ALLOWED_LOGON_VERSION_CLIENT

SQLNET.ALLOWED_LOGON_VERSION_SERVE

注意:参数和等号之间不要有空格,否则有可能参数不生效。

二、处理ORA-28040错误

SQLNET.ALLOWED_LOGON_VERSION=8

或者使用更高版本的客户端。

这里的n默认为11. 第一个参数是客户端连接到服务器的时候启作用,第二个是做为客户端去连接其它数据库的时候启作用。

这里修改如下:

[oracle@host02 admin]$ pwd

/u01/app/oracle/product/18.3.0/dbhome_1/network/admin

[oracle@host02 admin]$ more sqlnet.ora

#SQLNET.ALLOWED_LOGON_VERSION_SERVER=11

#SQLNET.ALLOWED_LOGON_VERSION_CLIENT=10

SQLNET.ALLOWED_LOGON_VERSION=8

SQLNET.ALLOWED_LOGON_VERSION_CLIENT=8

SQLNET.ALLOWED_LOGON_VERSION_SERVE=10

修改后使用reload 监听

[oracle@host02 admin]$ lsnrctl

LSNRCTL for Linux: Version 18.0.0.0.0 - Production on 13-FEB-2019 15:56:45

Copyright (c) 1991, 2018, Oracle. All rights reserved.

Welcome to LSNRCTL, type "help" for information.

LSNRCTL> reload

Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))

The command completed successfull

三、ORA-01017错误

从错误提示看是用户名或者密码错误,其实用户名和密码没有问题。 这里的问题是我们配置的sqlnet对之前已经存在的帐号并没有生效,他们还保持在之前的兼容性。

使用alter修改密码

注意这里虽然SYS并没有改变,但是SYSTEM的版本已经加上了10G。实际上,现在这2个用户都可以连接了:

据Oracle官方的说法,这里是bug,所以如果以低版本的客户端连接18c,需要特别留意这2个错误。

此时sysem及sys就可以连接了。

总结

应该是oracle密码版本写入的时候使用的时11g和12c配置的规则,导致正确密码也无法通过验证。

在sqlnet.ora文件新增了参数后密码虽然支持n以上版本,但是此时由于密码规则事先写入,导致低版本客户端无法识别。

此时只需要alter user_name identified by passwd ;修改一遍即可了。官方明确说了不支持10g以下客户端,虽然是个BUG,但是保险起见还是把低版本客户端升级比较好。

关于SQLNET.ORA中的参数SQLNET.ALLOWED_LOGON_VERSION

一生产库上,alert日志中一直抛出SQLNET.ALLOWED_LOGON_VERSION = 10 被废弃的信息。

该生产库是12c,由于该服务器上存在多个生产库,不敢随便修改此参数,于是在metalink上查找一番:

看到这篇文章:Doc ID 1957995.1

有这么一段话:

This issue is caused by the default setting for allowed logon version in the 12 database.

Note that the SQLNET.ALLOWED_LOGON_VERSION parameter has been deprecated in 12c.

That parameter has been replaced by these:

SQLNET.ALLOWED_LOGON_VERSION_SERVER=n

SQLNET.ALLOWED_LOGON_VERSION_CLIENT=n

The default setting for the new parameters is 11. Any client that attempts to connect must

be at version 11 or higher unless these parameters are explicitly set in the server side sqlnet.ora file.

可以看出,该参数在12c中已经被废弃了,被另外两个参数所取代(SQLNET.ALLOWED_LOGON_SERVER,SQLNET.ALLOWED_LOGON_CLIENT)。

接着看下SQLNET.ALLOWED_LOGON_VERSION的作用:

看文章:Doc ID 402193.1

Use the sqlnet.ora parameter SQLNET.ALLOWED_LOGON_VERSION to specify which authentication protocols are allowed by the client or database. This parameter defines the minimum Client Oracle version that is allowed to connect to the database. This parameter has been introduced in 10g which replaces the init.ora parameter DB_ALLOWED_LOGON_VERSION.

即该参数用来限制可以连接到数据库服务器上的最小客户端版本,比如设置值为10,即10g,11g等以上客户端版本可以连接到数据库服务器上。

参考:

https://blog.csdn.net/u013456370/article/details/76994624

18c和12客户端 oracle,客户端连接 12、18c 报ORA-28040和ORA-01017 的解决方法相关推荐

  1. Python 技术篇-操作oracle数据库执行SQL语句报错,提示ORA-00911: 无效字符解决方法

    cursor.execute("select name from v$datafile;") 执行 sql 语句提示无效字符. 原因就是我加入了 ; 号. 改成 cursor.ex ...

  2. linux 上oracle已经启动 但是客户端无法连接,Oracle 客户端连接排错

    要排除客户端与服务器端的连接问题,首先检查客户端配置是否正确(客户端配置必须与数据库服务器端监听配置一致),再根据错误提示解决.下面列出几种常见的连接问题 1.    ORA----12541: TN ...

  3. oracle 客户端修复,传授win7系统配置Oracle客户端连接失败的恢复方法

    最近用用户向我反映win7系统配置Oracle客户端连接失败的问题,经小编研究表明,大部分的朋友还是不会处理win7系统配置Oracle客户端连接失败的问题,于是小编就个大家整理的win7系统配置Or ...

  4. oracle客户端测试连接失败,教你解决win7系统配置Oracle客户端连接失败的设置步骤...

    雨林木风win7系统是比较经典的电脑操作系统,很多电脑都在安装和使用.用的时间长了,大家就会遇到win7系统配置Oracle客户端连接失败的状况,很明显大部分人都是首次看到win7系统配置Oracle ...

  5. 配置ORACLE 客户端连接到数据库

    --================================= -- 配置ORACLE 客户端连接到数据库 --================================= Oracle ...

  6. ORACLE客户端连接

    oracle客户端连接各文件作用及解释: netca命令可配置 listener.ora:存在于服务器端,用于监听各类客户端连接请求, tnsnames.ora:存在于客户端, (以下是一个tnsna ...

  7. Missing artifact com.oracle:ojdbc6:jar:11.2.0.3 Maven中不能引入ojdbc解决方法,错误

    Missing artifact com.oracle:ojdbc6:jar:11.2.0.3 Maven中不能引入ojdbc解决方法,错误 参考文章: (1)Missing artifact com ...

  8. Oracle 11G R2 RAC 启动报错:ORA-01078 ORA-01565 ORA-17503 ORA-12547 处理方法

    Oracle 11G R2 RAC 启动报错:ORA-01078 ORA-01565 ORA-17503 ORA-12547 处理方法 前几天搭建的RAC测试环境:RedHat 6.8   grid ...

  9. linux下svn客户端报错Cannot negotiate authentication mechanism的解决方法

    svn客户端报错Cannot negotiate authentication mechanism的解决方法: 问题出现的原因之一: 因为SVN服务器配置了saslauthd服务用来实现与ldap的对 ...

最新文章

  1. windows下检测网站是否正常运行并自动重启服务
  2. 量子计算101:浅谈其需求、前景和现实
  3. 带父节点的平衡二叉树_数据结构(八)平衡二叉树
  4. Linux系统信息查看命令大全
  5. bzoj1095 [ZJOI2007]Hide 捉迷藏
  6. 设置 chrome 无头浏览器
  7. [SCOI2005]骑士精神
  8. html里用js实现随机抽奖,javascript实现随机抽奖功能
  9. AI如何在医疗中大显身手?
  10. Windows javaw进程占用cpu资源100% 导致电脑卡顿
  11. sql组合字段in查询
  12. equals和==的区别
  13. matlab-基础 逻辑运算符 不等于
  14. Android如何安全替换证书
  15. where条件中有权限校验的自定义函数优化方法
  16. 在 Ubuntu 下安装“魔灯”教学平台
  17. STM32浮点运算单元(FPU)和DSP库使用
  18. 数字孪生智慧城市运用于三维可视化管理系统
  19. 第五讲 Django开发选择题练习的应用
  20. 简单易学多维数据可视化R实现:神奇的卡通脸谱图Chernoff faces

热门文章

  1. 基于微信视频分享平台小程序设计与实现 开题报告
  2. Delphi Web前端开发教程(2):基于TMS WEB Core框架
  3. 同样是IT行业,测试和开发薪资真有这么大差别?
  4. springcloudalibaba项目的搭建
  5. 黑苹果与白苹果的区别及其安装方式
  6. 计算机竞赛一等奖学校名单,信息竞赛获奖名单出炉!这些学校榜上有名
  7. 【技术邻】基于DynaForm的多工步连续模(级进模)分析实例
  8. 那些年我们踩过的Hive坑
  9. C++算法复习之深度优先搜索(dfs)与解救小扣题解
  10. 改计算机名字 和 命令