简体   繁体   English

Oracle DB - 从 19c 客户端连接 11gR2 DB - ORA-12650:没有通用加密或数据完整性算法

[英]Oracle DB - Connecting 11gR2 DB from 19c Client - ORA-12650 : No Common Encryption or data integrity algorithm

We have Oracle 19c Client installed in our application Unix server.我们的应用程序 Unix 服务器中安装了 Oracle 19c 客户端。

When we connect to a 19c Database server from our application Unix server, it is working as expected.当我们从我们的应用程序 Unix 服务器连接到 19c 数据库服务器时,它按预期工作。

But when we try Connecting 11gR2 Database schema using sqlplus from our application server, getting the error ORA-12650: No Common Encryption or data integrity algorithm但是当我们尝试使用应用服务器中的 sqlplus 连接 11gR2 数据库模式时,收到错误ORA-12650: No Common Encryption or data integrity algorithm

From our application Unix server, we did a tnsping with the connect descriptor we had used.从我们的应用程序 Unix 服务器中,我们使用我们使用的连接描述符进行了 tnsping。 TNSPING is working fine from our application server. TNSPING 在我们的应用服务器上运行良好。

etladm@myappserver992[DEV][admin] $ tnsping MYOLD_DB_DEV

TNS Ping Utility for Linux: Version 19.0.0.0.0 - Production on 15-MAR-2021 01:36:00

Copyright (c) 1997, 2019, Oracle.  All rights reserved.

Used parameter files:
/u01/app/oracle/product/client/19c/network/admin/sqlnet.ora


Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST =my11gr2dbserverdaas)(PORT = 1622))) (CONNECT_DATA = (SERVICE_NAME = DEV.hk.myorg.com)))
OK (450 msec)
etladm@myappserver992[DEV][admin] $

Note: In our application server we have both Oracle 11gR2 Oracle client as well as 19c Oracle client are installed due to other module's dependencies.注意:在我们的应用程序服务器中,我们同时安装了 Oracle 11gR2 Oracle 客户端以及 19c Oracle 客户端,因为其他模块依赖。 But Unix PATH variable is set to point Oracle 19c Oracle home path但是 Unix PATH 变量设置为指向 Oracle 19c Oracle 主路径

etladm@myappserver992[DEV][~] $ echo $ORACLE_HOME
/u01/app/oracle/product/client/19c
etladm@myappserver992[DEV][~] $

sqlnet.ora found in our 19c Client admin directory:在我们的 19c 客户端管理目录中找到 sqlnet.ora:

# Forces Network Data Encryption during Transit

NAMES.DIRECTORY_PATH=(EZCONNECT,TNSNAMES)
SQLNET.ENCRYPTION_CLIENT = REQUIRED
SQLNET.ENCRYPTION_TYPES_CLIENT = AES256
SQLNET.CRYPTO_CHECKSUM_CLIENT = REQUIRED
SQLNET.CRYPTO_CHECKSUM_TYPES_CLIENT = SHA256
SQLNET.ALLOWED_LOGON_VERSION_SERVER=8
SQLNET.ALLOWED_LOGON_VERSION_CLIENT=8
# SQLNET.ALLOWED_LOGON_VERSION_CLIENT=12

We are unable to upgrade our 11gR2 DB currently.我们目前无法升级我们的 11gR2 数据库。 So looking for any settings at sqlnet.ora or somewhere.因此,在 sqlnet.ora 或其他地方寻找任何设置。

Edit #1: We are able to connect to 12c Oracle DB server from our application server using 19c sqlplus.编辑#1:我们可以使用 19c sqlplus 从我们的应用服务器连接到 12c Oracle DB 服务器。

etladm@myappserver992[DEV][admin] $ sqlplus username/password@my12cdbserversilos:1624/DEV.uk.myorg.com

SQL*Plus: Release 19.0.0.0.0 - Production on Mon Mar 15 01:48:17 2021
Version 19.3.0.0.0

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

Last Successful login time: Mon Mar 15 2021 01:46:36 +08:00

Connected to:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production

SQL> select * from v$version;

BANNER                                                                   CON_ID
--------------------------------------------------------------------------------
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production  0
PL/SQL Release 12.2.0.1.0 - Production         0
CORE    12.2.0.1.0      Production         0
TNS for Linux: Version 12.2.0.1.0 - Production       0
NLSRTL Version 12.2.0.1.0 - Production               0

SQL>

Edit #2 : 11g Server Version :编辑#211g 服务器版本

select * from v$version;
BANNER
----------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
PL/SQL Release 11.2.0.4.0 - Production
"CORE   11.2.0.4.0  Production"
TNS for Linux: Version 11.2.0.4.0 - Production
NLSRTL Version 11.2.0.4.0 - Production

SQLNET.ORA in 11g Server : 11g 服务器中的 SQLNET.ORA

NAMES.DIRECTORY_PATH= (TNSNAMES, LDAP, EZCONNECT)
SQLNET.ENCRYPTION_SERVER=REQUESTED
SEC_USER_AUDIT_ACTION_BANNER=/u01/app/oracle/global/scripts/BANNER/dbbanner.txt

Your 19c client sqlnet.ora requires a SHA256 checksum:您的 19c 客户端 sqlnet.ora 需要 SHA256 校验和:

 SQLNET.ENCRYPTION_CLIENT = REQUIRED SQLNET.ENCRYPTION_TYPES_CLIENT = AES256 SQLNET.CRYPTO_CHECKSUM_CLIENT = REQUIRED SQLNET.CRYPTO_CHECKSUM_TYPES_CLIENT = SHA256

Oracle 11gR2 only supports the SQLNET.CRYPTO_CHECKSUM_TYPES_SERVER value SHA1 . Oracle 11gR2 仅支持SQLNET.CRYPTO_CHECKSUM_TYPES_SERVERSHA1 See documentation here: https://docs.oracle.com/cd/E11882_01/network.112/e40393/asoappa.htm#ASOAG9780 .请参阅此处的文档: https://docs.oracle.com/cd/E11882_01/network.112/e40393/asoappa.htm#ASOAG9780

If you want to make a TCPS connection to the 11.2 database, you're going to have to include SHA1 in the list of SQLNET.CRYPTO_CHECKSUM_TYPES_CLIENT values on your 19c client, and see that the server sqlnet.ora is similarly configured.如果要建立与 11.2 数据库的 TCPS 连接,则必须在 19c 客户端上的 SQLNET.CRYPTO_CHECKSUM_TYPES_CLIENT 值列表中包含 SHA1,并查看服务器 sqlnet.ora 的配置是否类似。 Note that use of SHA1 has been considered insecure since at least 2016.请注意,至少从 2016 年开始,使用 SHA1 就被认为是不安全的。

client sqlnet.ora:客户端 sqlnet.ora:

SQLNET.CRYPTO_CHECKSUM_CLIENT = REQUIRED
SQLNET.CRYPTO_CHECKSUM_TYPES_CLIENT = (SHA256, SHA1)

11gR2 server sqlnet.ora: 11gR2 服务器 sqlnet.ora:

SQLNET.ENCRYPTION_SERVER = REQUIRED
SQLNET.ENCRYPTION_TYPES_SERVER = AES256
SQLNET.CRYPTO_CHECKSUM_SERVER = REQUIRED
SQLNET.CRYPTO_CHECKSUM_TYPES_SERVER = SHA1

Also note that per Oracle Support Doc ID 207303.1 your 11gR2 database must be at least version 11.2.0.3 or 11.2.0.4 to support a 19c client.另请注意,根据 Oracle 支持文档 ID 207303.1 ,您的 11gR2 数据库必须至少为 11.2.0.3 或 11.2.0.4 版本才能支持 19c 客户端。 Previous releases (eg 11.2.0.1) do not support the 19c client at all.以前的版本(例如 11.2.0.1)根本不支持 19c 客户端。

Finally my DBAs pitch in. Client sqlnet.ora is updated as below and no change to 11gR2 server sqlnet.ora:最后我的 DBA 参与进来。客户端 sqlnet.ora 更新如下,对 11gR2 服务器 sqlnet.ora 没有任何更改:

NAMES.DIRECTORY_PATH=(EZCONNECT,TNSNAMES)
SQLNET.ENCRYPTION_CLIENT = REQUIRED
SQLNET.ENCRYPTION_TYPES_CLIENT = (AES256,RC4_256,AES192,3DES168,AES128,RC4_128,3DES112,RC4_56,DES,RC4_40,DES40)
SQLNET.CRYPTO_CHECKSUM_CLIENT = REQUIRED
SQLNET.CRYPTO_CHECKSUM_TYPES_CLIENT =(SHA256,MD5)
SQLNET.ALLOWED_LOGON_VERSION_SERVER=8
SQLNET.ALLOWED_LOGON_VERSION_CLIENT=8

Thank you @pmdba for your guidance.感谢@pmdba 的指导。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 Java 连接字符串 ORA-12650:没有通用的加密或数据完整性算法 - Java connection String ORA-12650: No common encryption or data integrity algorithm 如何安装Oracle客户端11gR2 - How to install Oracle client 11gR2 PL/SQL/Oracle DB:过程:ORA-29013:SSL MAC 验证失败(数据库 19c) - PL/SQL/Oracle DB: Procedure: ORA-29013: SSL MAC verification failure (Database 19c) 从 Oracle 11 迁移到 19c - Migrating from Oracle 11 to 19c 为什么将 Oracle DB 从 11g 升级到 19c 后 OracleConnection.Open() 的实例会抛出错误? - Why the Instance of OracleConnection.Open() throws an error after upgrading the Oracle DB from 11g to 19c? 如何使用 oracle db 19c 创建从 windows 客户端到另一台 windows 机器的 ssl/tls 连接? - How can I create a ssl/tls connection from windows client to another windows machine with oracle db 19c? Oracle 11gR2安装程序中遇到的ORA-00922 - ORA-00922 encountered in Oracle 11gR2 installer Oracle DB 内置过程/函数在 11g 和 19c 之间不推荐使用 - Oracle DB built-in procedure/functions deprecated between 11g and 19c 如何连接Spring和Oracle db(oracle cloud) 19c - How to connect Spring and Oracle db (oracle cloud) 19c Jhipster 和 Oracle 11gr2? - Jhipster and Oracle 11gr2?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM