ORA-28040:将数据库从11g升级到12c之后

时间:2019-01-25 06:59:07

标签: database oracle database-migration oracle12c

问题陈述:
我们正在进行迁移活动,其中我们已将数据库从ORACLE 11g迁移到ORACLE 12c。升级后,使用jdk 6和ojdbc6.jar(JDBC驱动程序)的应用程序之一无法连接12c数据库。发生错误时,我们得到- java.sql.SQLException:ORA-28040:没有匹配的身份验证协议”将数据库升级到12c之后

当前配置:
JDK版本-1.6
JDBC驱动程序-ojdbc6.jar
数据库版本:Oracle 12c

SQLNET.ALLOWED_LOGON_VERSION_SERVER = 11 SQLNET.ALLOWED_LOGON_VERSION_CLIENT = 11

已尝试解决方法:
1)我们尝试使用jdk1.6和ojdbc6.jar运行一个简单的jdbc应用程序,成功了。也是根据Oracle兼容性矩阵。
2)我们要求更新参数SQLNET.ALLOWED_LOGON_VERSION_SERVER = 8,但是安全团队无法执行此操作,因为它不符合安全标准。

请提出我们应该如何继续解决此问题的建议。

谢谢。

1 个答案:

答案 0 :(得分:0)

然后问题出在weblogic.jar上,并且从weblogic.jar的类路径中引用了ojdbc14.jar。我们检查了WL_HOME \ server \ lib库,发现其中存在ojdbc14.jar。我们只是将其保留在那里,但是将ojdbc6.jar复制到某个外部目录中,并在所有jar之前将其加载到CLASSPATH中。下面是来自oracle docs-

该驱动程序通过weblogic.jar安装在WL_HOME \ server \ lib文件夹(其中WL_HOME是WebLogic Server的安装文件夹)中。 weblogic.jar中的清单列出了此文件,以便在加载weblogic.jar时(服务器启动时)将其加载。因此,您无需将此JDBC驱动程序添加到CLASSPATH。如果计划使用未随WebLogic Server一起安装的第三方JDBC驱动程序,则必须安装驱动程序,其中包括使用驱动程序文件的路径更新CLASSPATH,并可能包括使用数据库客户端的路径更新PATH。文件。请在新窗口http://www.oracle.com/technology/software/products/ias/files/fusion_certification.htmlOpens上的“ Oracle Fusion Middleware支持的系统配置”页面上查看“支持的数据库配置”。

如果计划使用随WebLogic Server一起安装的任何驱动程序的不同版本,则可以用文件的更新版本替换WL_HOME \ server \ lib中的驱动程序文件,或将新文件添加到您的驱动程序的前面。 CLASSPATH。

因此,如果您遇到相同的问题,我想建议-
1)检查Oracle驱动程序(ojdbc)-与StackOverflow上的大多数帖子一样。 You can check ojdbc driver compatibity here
2)如果您不能立即更改驱动程序,则在sqlnet.ora

中进行以下更改
SQLNET.ALLOWED_LOGON_VERSION_SERVER=8
SQLNET.ALLOWED_LOGON_VERSION_CLIENT=8

(SQLNET.ALLOWED_LOGON_VERSION在12c中被贬值。另外,请注意,在12c中,SQLNET.ALLOWED_LOGON_VERSION_SERVER参数的默认值已更新为“ 11”。这意味着使用11g之前的JDBC瘦驱动程序的数据库客户端除非参数设置为旧的默认值“ 8”,否则无法对12.1数据库服务器进行身份验证) 供您参考,请检查-
https://docs.oracle.com/database/121/UPGRD/deprecated.htm#UPGRD60010
https://docs.oracle.com/database/121/UPGRD/afterup.htm#UPGRD60157

谢谢。