暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

10g客户端访问19c数据库失败问题

3402

19c本地登录可以正常访问,如下:

[oracle@yxcache1 ~]$  sqlplus system/'******'@10.135.30.106:1521/filenet

SQL*Plus: Release 19.0.0.0.0 - Production on Thu May 13 17:48:15 2021
Version 19.8.0.0.0

Copyright (c) 1982, 2020, Oracle.  All rights reserved.

Last Successful login time: Thu May 13 2021 17:40:41 +08:00

Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.8.0.0.0
复制

10g客户端登录19c数据库时出现报错,访问失败,如下:

[oracle@Pro-VM0936 backup]$ sqlplus 'system/"******"'@10.135.30.106:1521/filenet

SQL*Plus: Release 10.2.0.5.0 - Production on Thu May 13 17:45:08 2021

Copyright (c) 1982, 2010, Oracle.  All Rights Reserved.

ERROR:
ORA-01017: invalid username/password; logon denied


Enter user-name: 
复制

查询用户相关信息:

SQL> show pdbs

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         3 FILENET                        READ WRITE NO

SQL> alter session set container=FILENET;

Session altered.

set lines 999 pages 999
col username for a20
select username,account_status,password_versions from dba_users where account_status='OPEN';

USERNAME             ACCOUNT_STATUS                   PASSWORD_VERSIONS
-------------------- -------------------------------- -----------------
SYS                  OPEN                             11G 12C
SYSTEM               OPEN                             11G 12C
DBSNMP               OPEN                             11G 12C
PDBADMIN             OPEN                             11G 12C
FNGCD                OPEN                             10G
FNOS00               OPEN                             10G
FNOS01               OPEN                             10G
复制

这里介绍两个参数

SQLNET.ALLOWED_LOGON_VERSION_CLIENT
SQLNET.ALLOWED_LOGON_VERSION_SERVER
复制

SQLNET.ALLOWED_LOGON_VERSION_CLIENT这个参数是12C新引进的参数。它表示Cp在向Sp发送认证(authentication)申请时,所使用的最低版本的认证协议。注意此处的认证协议版本并不等同于Oracle Database的版本。那不同的认证协议版本主要区别在哪儿呢?除了协议语义上的区别,在我看来,最重要的区别在于不同认证协议的版本对应着不同的database version,而不同的database version则可能使用不同的hash算法对密码进行加密。不同的hash算法就是不同的password_version,这个可以从dba_users字典表的password_versions字段中得到说明:

Shows the list of versions of the password hashes (also known as "verifiers") existing for the account.
The PASSWORD_VERSIONS column value includes 10G if an old case-insensitive ORCL hash exists and 11G if a SHA-1 hash exists.

Note that one or both of these verifiers can exist for any given account.
复制

Oracle在存储每个account的密码时,并非是明文存储,而是会将明文进行哈希加密存储,哈希加密算法即为该密码的version,即password_version。从上述说明可知,password_version实际上表示是同版本(并非完全一致,见最后的附表)的database 所提供的hash算法,例如password_version 10g就表示database 10g所提供的hash算法。如果Oracle所有的新版本都只使用新版本所特有的hash算法,那么一些较早的客户端因为还没有这些hash算法,就没法通过hash算法得到hash值,也就没法让服务器去验证这些hash值。为了解决兼容性的问题,Oracle会同时用多种hash算法(即password_version)对密码进行运算,并将多个运算结果均保留下来。在低版本客户端访问高版本的服务器时,低版本的客户端可以通报自己使用的认证协议以及使用该协议对应的hash算法所得到的密码hash值,服务器根据认证协议去查看是否存储了该协议对应的hash算法的hash值,如果存在,就比对两个hash值是否一致;如果不存在或两个hash值不一致,就报错。

随机做如下配置,并创建测试用户并测试连接:

[oracle@yxcache1 admin]$ cat sqlnet.ora 
SQLNET.ALLOWED_LOGON_VERSION_SERVER=8
SQLNET.ALLOWED_LOGON_VERSION_CLIENT=8
复制
create user test identified by test;

SQL> grant create session to test;

Grant succeeded.

select username,account_status,password_versions from dba_users where account_status='OPEN';

USERNAME             ACCOUNT_STATUS                   PASSWORD_VERSIONS
-------------------- -------------------------------- -----------------
SYS                  OPEN                             11G 12C
SYSTEM               OPEN                             11G 12C
DBSNMP               OPEN                             11G 12C
PDBADMIN             OPEN                             11G 12C
TEST                 OPEN                             10G 11G 12C
FNGCD                OPEN                             10G
FNOS00               OPEN                             10G
FNOS01               OPEN                             10G
复制
sqlplus test/test@10.135.30.106:1521/filenet

[oracle@Pro-VM0936 admin]$ sqlplus test/test@10.135.30.106:1521/filenet

SQL*Plus: Release 10.2.0.5.0 - Production on Thu May 13 17:59:44 2021

Copyright (c) 1982, 2010, Oracle.  All Rights Reserved.


Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
复制

发现登录成功。

参考:https://www.cnblogs.com/6yuhang/p/7600929.html

最后修改时间:2021-10-08 15:18:15
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论