问题描述
我们已将 Oracle 数据库从 11g 迁移到 12c.我们有一个在 Java 1.5 中运行并使用 ojdbc14.jar 的遗留应用程序.
We have migrated our Oracle database to 12c from 11g.We have a legacy application running in Java 1.5 and using ojdbc14.jar.
我们的应用程序无法创建到数据库的连接错误说:
Our application is not able to create connection to database error saying :
java.sql.SQLException: ORA-28040: No matching authentication protocol
我建议回答 ORA-28040:没有匹配的身份验证协议异常,并尝试将我的 ojdbc14.jar 升级到 ojdbc6.jar.
I reffered to answer ORA-28040: No matching authentication protocol exception, and tried to upgrade my ojdbc14.jar to ojdbc6.jar.
我现在收到一条不同的错误消息:
I now have a different error message saying :
error: OracleCallableStatement is not public in oracle.jdbc.driver; cannot be accessed from outside package
import oracle.jdbc.driver.OracleCallableStatement;
^
error: OracleTypes is not public in oracle.jdbc.driver; cannot be accessed from outside package
cstmt.registerOutParameter(3,oracle.jdbc.driver.OracleTypes.CURSOR);
^
Ant 构建文件:
<javac srcdir="${src}" destdir="${classes}" source="1.5" target="1.5">
<classpath refid="cpath" />
</javac>
不确定我们应该做什么才能使应用程序正常工作.
Not sure what exactly we should do to get the application working.
推荐答案
我最近在 2 个不同的应用程序中遇到了同样的错误:
I had the same error with 2 different applications recently:
- Tomcat 7 上的 Java 7 应用程序,使用 odbc6.jar 和 Oracle 12 c 数据库.
- 带有 Oracle 12 c 数据库的旧式 ASP 应用程序.
中提到的第二种解决方案您提到的同一帖子 - 对我们来说效果很好.
The second solution mentioned in thesame post you referred to - worked well for us.
解决方法:在 oracle/network/admin/sqlnet.ora 文件中设置 SQLNET.ALLOWED_LOGON_VERSION=8.
我们与 DBA 一起在数据库服务器上的 sqlnet.ora 上设置了上述选项.这解决了我们的问题.我希望它可以帮助某人.
We worked with our DBAs to set the above option on the sqlnet.ora on the database server. This resolved our issue. I hope it helps someone.
这篇关于ORA-28040:没有匹配的身份验证协议:Oracle 12c 升级的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!