java - 如何从 Java 解锁 Oracle 用户的帐户?

标签 java oracle jdbc sysadmin

我想弄清楚为什么我的应用程序无法成功解锁用户的 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/

相关文章:

java - 使用 Sun JConsole 访问 Websphere 7 MBean

Java executeQuery 返回空值

java - 使用动态java变量在jsp中的一条语句中删除多行

java - 双参数PreparedStatement 抛出语法错误,SQL 状态 42601,靠近第二个参数

java - 模糊 'StringIndexOutOfBoundsException"

java - setMaximumSize 对以 boxlayout 排列的 JPanel 的影响

c# - 在 C# 中执行一个返回引用游标的 oracle 函数

java - 为 DB2 和 Oracle 使用 java 插入 BLOB

mysql - 在此查询中,如何在 GROUP BY 之前执行 SELECT?

java - OrientDB - 数据库对象与当前线程不同步