修改$ORACLE_HOME/network/admin/sqlnet.ora

原因分析:

网上查了主要是说我电脑上orcale的客户端版本和访问的oracle服务端的版本不一致,但我连接的是本地数据库,应该不存在该问题。保险起见,我先在网上找了相关问题的讨论,大家提出的常用解决方案是修改$ORACLE_HOME/network/admin/sqlnet.ora文件里的参数配置,对于该方法跟我的问题的适配性,先持怀疑态度吧。

解决方案:

  • 方法一:

方法一的官方解释是:

This issue is caused by the default setting for allowed logon version in the 12 database.
Note that the SQLNET.ALLOWED_LOGON_VERSION parameter has been deprecated in 12c.
That parameter has been replaced by these:

SQLNET.ALLOWED_LOGON_VERSION_SERVER=n
SQLNET.ALLOWED_LOGON_VERSION_CLIENT=n

The default setting for the new parameters is 11.  Any client that attempts to connect must 
be at version 11 or higher unless these parameters are explicitly set in the server side sqlnet.ora file.

这段话的意思是,(SQLNET.ALLOWED_LOGON_VERSION)参数在12c中已经被弃用了,被另外两个参数所取代(SQLNET.ALLOWED_LOGON_SERVER,SQLNET.ALLOWED_LOGON_CLIENT)。该参数用来限制可以连接到数据库服务器上的最小客户端版本,12c中这两个新参数的默认值为11,即11g及以上客户端版本可以连接到数据库服务器上。

两个参数区别如下:

SQLNET.ALLOWED_LOGON_VERSION_SERVER:控制可以连接到12c数据库的客户端版本(client --->orace 12c db)

SQLNET.ALLOWED_LOGON_VERSION_CLIENT:控制12c数据库可以连到哪些版本的数据库(orace 12c db  --->其它版本的oracle db),例如:控制通过DB LINK可连接到哪些版本的oracle库。

具体解决办法:

在Oracle用户下,将%ORACLE_HOME%/network/admin/sqlnet.ora文件(如果没有sqlnet.ora文件,那么就创建一个)最后添加如下的行:

SQLNET.ALLOWED_LOGON_VERSION_SERVER=8

SQLNET.ALLOWED_LOGON_VERSION_CLIENT=8

重启应用,报错仍然存在,这个方法可能对我的问题来说并不适用。

 

  •  方法二:

连接数据库方式不动还是JDBC,然后也不改变sqlnet.ora里的对应的版本配置,复制Oracle路径下的%ORACLE_HOME%\jdbc\lib下的ojdbc7.jar,添加到tomcat路径下的%CATALINA_HOME%\lib文件。
说明一下,我电脑上装的是JDK 8,ojdbc7.jar 是基于JDK 7和JDK 8的驱动,添加时要注意对应的版本 ,oracle的jdbc的版本与jdk对应关系可参考另一位博主的文章:https://www.cnblogs.com/zhuitian/p/11581607.html
之后,重启应用,就不再有报错了,完美解决!
 
 
posted @   滴滴滴  阅读(104)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
历史上的今天:
2023-08-21 k8s 证书有效期查看
原因分析:解决方案:方法一: 方法二:
点击右上角即可分享
微信分享提示