ADW连Oracle 11.2.0.1报ORA-28040,同版本19c连接正常
问题分析与解决方案
为什么ADW报错而传统19c正常?
Oracle自治数据仓库(ADW)出于安全合规性考虑,默认的认证协议配置比传统安装的19c数据库更严格:
- 传统19c数据库默认的
SQLNET.ALLOWED_LOGON_VERSION_CLIENT和SQLNET.ALLOWED_LOGON_VERSION_SERVER参数值通常为11,允许与11g版本的数据库使用旧版认证协议完成身份验证。 - ADW默认将这两个参数设置为更高的数值(如12或12c),直接禁用了11g及更早版本依赖的认证协议,因此连接11.2.0.1数据库时会触发
ORA-28040: No matching authentication protocol错误。
如何配置ADW连接Oracle 11.2.0.1?
你需要调整ADW的初始化参数,允许使用兼容11g的认证协议,步骤如下:
方法1:通过PL/SQL命令修改参数
在ADW中执行以下PL/SQL代码,调整认证版本限制:
-- 设置客户端允许的最低认证版本 EXEC DBMS_CLOUD_ADMIN.SET_PARAMETER( PARAMETER_NAME => 'SQLNET.ALLOWED_LOGON_VERSION_CLIENT', PARAMETER_VALUE => '11' ); -- 设置服务器允许的最低认证版本 EXEC DBMS_CLOUD_ADMIN.SET_PARAMETER( PARAMETER_NAME => 'SQLNET.ALLOWED_LOGON_VERSION_SERVER', PARAMETER_VALUE => '11' );
方法2:通过OCI控制台修改参数
- 登录OCI控制台,进入你的ADW实例详情页面。
- 在左侧导航栏选择“初始化参数”。
- 在搜索框中分别查找
SQLNET.ALLOWED_LOGON_VERSION_CLIENT和SQLNET.ALLOWED_LOGON_VERSION_SERVER。 - 将两个参数的数值修改为
11,保存并应用更改。
验证配置
参数修改完成后,重新创建或使用已有的数据库链接测试连接:
-- 示例:创建数据库链接 CREATE DATABASE LINK adw_to_11g CONNECT TO remote_user IDENTIFIED BY remote_password USING '(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=your_private_endpoint)(PORT=1521))(CONNECT_DATA=(SID=your_11g_sid)))'; -- 测试查询 SELECT * FROM dual@adw_to_11g;
注意:降低认证版本会带来一定的安全风险,建议在完成必要的业务操作后,及时将参数恢复为默认值,或考虑升级目标11.2.0.1数据库至更高版本以提升安全性。
内容的提问来源于stack exchange,提问作者user3764298
相关产品推荐
相关产品推荐

