PLSQL9连接Oracle 12c/19c报错:ORA-28040: No matching authentication protocol

问题背景

使用plsql9 连接Oracle 19c报错:
ORA-28040:没有匹配的验证协议
ORA-28040: No matching authentication protocol或ORA-03134: Connections to this server version are no longer supported错误

问题解决

方案一

升级instantclient的版本,比如使用:
instantclient-basic-windows.x64-19.3.0.0.0dbru;-- x64 64位客户端
instantclient-basic-nt-19.12.0.0.0dbru; -- x86 32位客户端
跟plsql developer没有关系的。

注意:
1、plsql连接oracle数据库,是通过instance-client作为连接驱动的,跟plsql没关系
2、instance-clientMicrosoft Visual C++有依赖:
   Instant Client 19.* 要求 Visual Studio 2015 - 2019 redistributable。
   Instant Client 12.2 要求 Visual Studio 2013 redistributable。
   Instant Client 12.1 要求 Visual Studio 2010 redistributable。
   Instant Client 11.2 要求 Visual Studio 2005 redistributable。
3、plsql developer <-> instance-client  <-> visual c++ 三者必须同时是32位或64位,不能混用。

方案二

步骤一:Oracle 19c Server端进行配置,$ORACLE_HOME/network/admin/sqlnet.ora 增加如下配置:

$ vi sqlnet.ora 
SQLNET.ALLOWED_LOGON_VERSION_CLIENT=8
SQLNET.ALLOWED_LOGON_VERSION_SERVER=8

步骤二:重建需要访问用户密码(使用旧密码即可、必须sqlplus登录修改)

$ sqlplus / as sysdba
SQL> alter user 用户名 identified by 密码;
SQL> select username,password_versions from dba_users where username = 'C##USER1'
USERNAME         PASSWORD_VERSIONS
C##USER1         10G 11G 12C

通过plsql9再次登录成功~

扩展

方案二 >> 步骤一中配置sqlnet.ora文件,其实如果只是解决plsql客户端连接Oracle服务器问题,只设置SQLNET.ALLOWED_LOGON_VERSION_SERVER=8即可

SQLNET.ALLOWED_LOGON_VERSION_SERVER:连接到 Oracle 数据库实例时允许的最低身份验证协议。
SQLNET.ALLOWED_LOGON_VERSION_CLIENT:

### 配置PL/SQL环境中的`ora`文件 #### 理解`ora`文件的作用 在Oracle数据库环境中,`.ora`文件主要用于存储配置参数。这些文件对于客户端应用程序(如PL/SQL Developer)连接Oracle数据库实例至关重要。常见的`.ora`文件包括`tnsnames.ora`和`listener.ora`。 #### `tnsnames.ora`文件的配置方法 为了使PL/SQL能够成功连接至目标数据库,在本地计算机上的Oracle客户端目录下需存在名为`tnsnames.ora`的文件[^1]。此文件定义了网络服务名及其对应的连接描述符。一个典型的条目可能如下所示: ```plaintext MYDB = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = myhost.example.com)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = myservicename) ) ) ``` 上述示例中,`MYDB`代表用户自定义的服务名称;而`(HOST=...)`部分则指定了要访问的目标主机地址以及监听端口等信息[^2]。 #### 处理常见错误提示 当尝试通过PL/SQL建立与远端数据库之间的链接时可能会遇到某些特定类型的报错消息。例如,“ORA-12514:TNS:listener does not currently know of service requested in connect descriptor”,这通常意味着客户端请求的服务未被侦听器识别。此时应确认`tnsnames.ora`内的设置是否正确无误,并确保远程机器上运行着相应的Listener进程[^3]。 另外一种情况是如果删除了必要的监听项(比如LISTENER_ORCL),那么即使其他配置都正常也可能导致无法完成正常的通信握手过程,进而引发诸如“ORA-01034: ORACLE not available”的异常状况[^4]。 #### 修改后的验证操作 一旦完成了对`ora`文件编辑之后,建议重启相关的Oracle组件来加载最新的更改。接着可以利用命令行工具测试新的连接字符串是否有效,或者直接打开PL/SQL Developer输入新设定好的别名来进行实际的数据查询活动以检验整个流程是否顺畅。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值