java - 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
解决方案
请检查您正在创建的密码文件。如果您使用该ignorecase
参数,它在 Oracle 12c 下仍然有效,但在 Oracle 19c 下无效。如果您使用此参数创建密码文件,则不会出现异常,并且该文件将成功创建,但无法正常工作。解决方案可能是在没有此参数的情况下重新创建此文件。我相信它应该有所帮助。
推荐阅读
- javascript - 无法使用ajax将数据发送到php文件
- java - 可以在迭代期间发生变异的可迭代集合
- join - 转置、拆分和加入 Google 表格
- python - Python如何拆分和连接列表中的字符
- oracle - Excel 宏连接到 Oracle 数据库
- java - Java 中的 Azure 应用程序功能,用于查看来自 azure 存储帐户的 blob 文件列表
- vbscript - 在运行 Selenium 脚本时在 Windows 中保持屏幕活动(不锁定)
- android - 如何让应用通知默认下拉
- c# - 更改禁用的颜色
- python - 将形状 (?,32,24,24) 的张量转换为 3D numpy 数组