客户端连接 12、18c 报ORA |
您所在的位置:网站首页 › plsql连接oracle数据库01017 › 客户端连接 12、18c 报ORA |
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,但是保险起见还是把低版本客户端升级比较好。 Oracle客户端的兼容性如下: |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |