我想弄清楚为什么我的应用程序无法成功解锁用户的 Oracle 帐户。这是我的代码片段:
OracleDataSource ods = new oracle.jdbc.pool.OracleDataSource();
Properties props = new Properties();
props.put("user", "sys");
props.put("password", "sys");
props.put("internal_logon", "sysdba");
ods.setConnectionProperties(props);
ods.setURL("jdbc:oracle:thin:@localhost:1523:TEST_DB");
Connection conn = ods.getConnection();
Statement stmt = conn.createStatement();
stmt.execute("ALTER USER SCOTT ACCOUNT UNLOCK");
stmt.close();
它在任何时候都不会引发 SQLException
或报告任何问题,但用户的帐户实际上并没有解锁。我是否遗漏了一些明显的东西,或者是否有一些巧妙的方法可以让它发挥作用?
最佳答案
如果让应用程序像这样以 sysdba 身份连接,我会非常紧张。
我希望有一个有权更改用户的特权用户,从中删除创建 session 权限,并让此模式包含一个 account_unlock pl/sql 过程,该过程将执行权限授予您的应用程序连接的用户. ALTER USER 功能强大,您可能希望限制您的应用程序可以更改的属性,甚至是单个用户。
这也可能解决这个问题。
关于java - 如何从 Java 解锁 Oracle 用户的帐户?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1604608/