首页 > 解决方案 > Oracle JDBC 无法以 sysdba 用户身份连接

问题描述

我以sysdba用户身份连接到数据库时遇到问题。在 oracle 12c 下执行相同的代码时,一切似乎都正常工作,并且我能够以sysdba用户身份连接,但是当尝试在 oracle 19c 下执行相同的代码时,会抛出 ORA-01017 异常。我检查了我已经正确创建了 orapwd 文件。当我改为thin它时,oci它可以工作,但我仍想使用thin.

OracleDataSource ods = new OracleDataSource();
Properties properties = new Properties();
properties.put("user", "sys");
properties.put("password", "password");
properties.put("internal_logon", "sysdba");

ods.setConnectionProperties(properties);
ods.setURL('here is my URL which works when OCI used instead of THIN');
ods.getConnection(); // when Oracle 12c is okay, oracle 19c thrown ORA exception.

我尝试使用用户“sys as sydba”,但结果是相同的 ORA-01017。有谁知道可能出了什么问题?我正在运行 ojdbc8:19.3.0.0

标签: javaoraclejdbc

解决方案


请检查您正在创建的密码文件。如果您使用该ignorecase参数,它在 Oracle 12c 下仍然有效,但在 Oracle 19c 下无效。如果您使用此参数创建密码文件,则不会出现异常,并且该文件将成功创建,但无法正常工作。解决方案可能是在没有此参数的情况下重新创建此文件。我相信它应该有所帮助。


推荐阅读