Oracle 12C出现 ORA-28040: No matching authentication protocol

本文解决Oracle 12C连接时出现的ORA-28040错误,提供下载PL/SQL及12C客户端的方法,并详细介绍配置步骤,确保客户端与服务器版本一致。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转自 :小张小张自有主张
连接Oracle 12C出现 ORA-28040: No matching authentication protocol,没有匹配的验证协议。

没有匹配的验证协议
出现这个原因是因为你的Oracle连接客户端与服务端Oracle的版本不匹配造成的。

eeg:你的客户端是10g,但是数据库是Oracle 12C,就会出现这种问题。
以下是处理方式以及注意事项:

1.下载安装客户端工具PL/SQL,

2.下载12C的客户端。小张小张自有主张(原文作者)链接(64位)

instantclient-basic-windows.x64-12.2.0.1.0.zip

链接:https://pan.baidu.com/s/1WzcR9LNqesfKehrpXuPx1g

提取码:6xgn

各位,请你们注意,由于12C几乎都是64位版本的,所以,包括Oracle客户端以及PLSQL Developer12都必须是64位版本的。你们很多人大都是32位版本的,那个用不了,用了你们就会发现打开pl/sql时没有“连接为”这个选项。

(1)解压instantclient-basic-windows.x64-12.2.0.1.0.zip,并将解压出的instantclient_12_2放在任意指定目录.比如我的是D:\Oracle\instantclient_12_2

(2)配置监听文件,在instantclient_12_2文件下创建NETWORK文件夹,在NETWORK下创建ADMIN文件夹,在ADMIN文件夹中创建tnsnames.ora文件,编辑内容如下(这个是我的,你们根据自己实际使用配置),注意可配置多个监听,监听多个数据库实例.

DB_FZ=(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.1)(PORT = 1521))

)

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = COM)

)

)

(3)配置系统环境变量,就是windows那个,下面有截图。

  1. 变量名:ORACLE_HOME 变量值:D:\Oracle\instantclient_12_2----oracle主目录

  2. 变量名:TNS_ADMIN 变量值:D:\Oracle\instantclient_12_2\NETWORK\ADMIN-----tnsnames.ora所在目录

  3. 变量名: NLS_LANG 变量值:SIMPLIFIED CHINESE_CHINA.ZHS16GBK

  4. 修改Path变量,在后面添加 D:\Oracle\instantclient_12_2

只是一个示例,还有其他三个需要统一配置

以上配置好后,在tnsnames.ora配上数据库TNS,你们知道这是什么吧?

打开PLSQL Developer12,在Configure—>Preferences中配置如下(其实不配置也可以,因为配置了环境变量了,不过为了以防万一,还是配置下。)配置中的路径就是instantclient_12_2对应路径。

以上配置完成,再次打开PLSQL Developer12,连接,数据库,问题解决。

以上,谢谢。

### 解决Navicat连接Oracle 12C时报错ORA-28040的方法 当遇到`ORA-28040: No matching authentication protocol`错误时,这通常是因为客户端使用的安全认证协议与服务器端不匹配。对于Navicat连接Oracle 12c的情况,可以采取以下措施来解决问题。 #### 修改SQLNET.ORA配置文件 为了使旧版客户端能够兼容新的Oracle 12c数据库,可以在数据库服务器上的 `$ORACLE_HOME/network/admin/sqlnet.ora` 文件中设置允许较早版本的身份验证协议[^3]: ```bash SQLNET.ALLOWED_LOGON_VERSION_SERVER=10 SQLNET.ALLOWED_LOGON_VERSION_CLIENT=10 ``` 上述参数设定使得服务器接受来自更低版本客户的请求,并且客户也采用较低的安全级别尝试建立会话。完成编辑后保存更改并重启监听器以及数据库实例以应用新设置。 #### 更新Navicat驱动程序 考虑到当前使用的Navicat版本可能并不完全支持最新的Oracle特性,建议检查是否有可用更新或考虑升级至更高版本的产品。新版软件往往包含了对更多类型数据源的支持及优化过的连接机制,有助于减少此类问题的发生概率[^2]。 #### 使用TNSNAMES.ORA定义服务名 另一种方式是在本地计算机上创建或修改 `tnsnames.ora` 来指定目标数据库的服务描述符。确保其中指定了正确的主机地址和服务名称,并通过这种方式建立连接而不是直接输入IP和SID/SERVICE_NAME组合。此方法有时能绕过某些特定环境下的认证差异带来的障碍[^4]。 ```plaintext MYDB = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = your_host)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = my_service_name) ) ) ``` 以上三种方案可以根据实际情况单独实施或者结合起来使用,从而有效处理因身份验证协议不符而导致的连接失败情况。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值