ORACLE 12C连接时报ORA28040和ORA01017的错误

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
简介: 【一】环境说明 1.1 Oracle服务端版本:12.2.0.1 1.2 Oracle客户端版本:11.2.0.1 【二】问题说明 2.1 客户端连接服务端的时候报ORA-28040的错误。

【一】环境说明

1.1 Oracle服务端版本:12.2.0.1
1.2 Oracle客户端版本:11.2.0.1

【二】问题说明

2.1 客户端连接服务端的时候报ORA-28040的错误。
2.2 客户端连接的时候报ORA-01017的错误。

【三】解决方法

3.1  ORA-28040错误的解决方法:
在数据库服务器上的oracle/network/admin/sqlnet.ora,增加如下
[oracle@rdb02 admin]$ cat sqlnet.ora
NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)
SQLNET.ALLOWED_LOGON_VERSION_SERVER=8
SQLNET.ALLOWED_LOGON_VERSION_CLIENT=8
 然后重启监听即可
lsnrctl stop
lsnrctl start
3.2 客户端连接的时候报ORA-01017的错误的解决方法:
在上一步的基础上面,修改用户名密码即可; 
SQL> ALTER USER system IDENTIFIED BY 12345678;

【四】原因分析

4.1 关于ORA-28040的错误原因,转发个链接: http://blog.itpub.net/28612416/viewspace-2138896/
简单可以理解:sqlnet值没设定的情况下ORACLE 12C的服务端只运行12C的客户端进行连接,所以通过11版本的客户端连接的时候就会报ORA-28040的错误。通过增加以上参数就可以让ORACLE12C的服务端运行较低的客户端进行连接;

4.2 关于密码报ORA-01017错误的分析如下:
  • 数据库的密码是经过加密的,数据库经过几个版本的更新每个版本的加密方法其实都是不一样的。
  • dba_users有保存一个PASSWORD_VERSIONS的信息,PASSWORD_VERSIONS的信息说明数据库保留密码解析的版本种类。
  • 用户登录的时候就会根据Client端的版本判断用哪种的解析方法进行解密
  • 客户端的版本和PASSWORD_VERSIONS的版本匹配能解析,否则就解析不了;
SQL> select username,password,PASSWORD_VERSIONS from dba_users where username in ('SCOTT','SYSTEM')
USERNAME                PASSWORD              PASSWORD_VERSIONS
-------------------- --------------------  --------------------
SYSTEM                                           11G 12C             #要求客户端的版本最低为11.2.0.3
SCOTT                                           10G 11G 12C          #要求客户端的版本最低为10
4.3 PASSWORD_VERSIONS版本又是怎么产生的了?
PASSWORD_VERSIONS的生跟上面的sqlnet.ora的一个参数:SQLNET.ALLOWED_LOGON_VERSION_SERVER。SQLNET.ALLOWED_LOGON_VERSION_SERVER设置不同值,就产生对应的password_versions。
所以当SQLNET.ALLOWED_LOGON_VERSION_SERVER=8时,PASSWORD_VERSIONS对应的值就是10G 11G 12C
SQLNET.ALLOWED_LOGON_VERSION_SERVER=8,PASSWORD_VERSIONS对应的值就是11G 12C
相关文章
|
5月前
|
Oracle 关系型数据库 数据库
已解决:idea 连接 oracle 数据库 避雷
已解决:idea 连接 oracle 数据库 避雷
47 2
|
1月前
|
SQL Oracle 关系型数据库
Python连接Oracle
Python连接Oracle
19 0
|
4月前
|
存储 Oracle 关系型数据库
Oracle 12c支持哪些数据类型?
【7月更文挑战第20天】Oracle 12c支持哪些数据类型?
84 2
|
4月前
|
SQL Oracle 关系型数据库
Oracle 12c有哪些新特性?
【7月更文挑战第20天】Oracle 12c有哪些新特性?
67 2
|
3月前
|
Oracle 关系型数据库
Navicat 连接Oracle ORA-28547: connection to server failed, probable Oracle Net admin error
Navicat 连接Oracle ORA-28547: connection to server failed, probable Oracle Net admin error
111 0
|
5月前
|
Oracle 数据可视化 关系型数据库
Oracle数据库安装及使用Navicat连接oracle2
Oracle数据库安装及使用Navicat连接oracle
|
5月前
|
Oracle 关系型数据库 数据库
实时计算 Flink版产品使用问题之连接到Oracle数据库但无法读取到数据,是什么导致的
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
5月前
|
Oracle 安全 关系型数据库
Oracle数据库安装及使用Navicat连接oracle1
Oracle数据库安装及使用Navicat连接oracle
|
6月前
|
Oracle Java 关系型数据库
【服务器】python通过JDBC连接到位于Linux远程服务器上的Oracle数据库
【服务器】python通过JDBC连接到位于Linux远程服务器上的Oracle数据库
78 6
|
6月前
|
消息中间件 Oracle 关系型数据库
实时计算 Flink版操作报错合集之在连接Oracle 19c时报错如何解决
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
121 0