在 Java 中测试 Oracle 数据库连接,没有 username/password

Test an Oracle DB connection in Java, with no username/password

我知道这与已经回答的问题非常相似,但略有不同。

我的生产连接设置中有一个连接列表。这个过程是从第一个开始,一直尝试直到我建立连接。我希望能够 运行 一个任务,该任务使用相同的列表作为其输入,但足以显示应用程序将使用哪些连接。为了避免我们的安全团队感到不安,这必须在没有 username/password.

的情况下完成

可能吗?

以下回答可能对您有所帮助。 getErrorCode() SQLException 中的方法 returns 1017 身份验证失败时的值。因此,您可以遍历连接列表并调用 validateConnection.

  • 我在这里使用虚拟用户名和密码(我没有看到任何其他选项)
  • 替换主机、端口和 SID 值。

    public static void main(String[] args) {
        String connString = "jdbc:oracle:thin:@host:port:SID";
        System.out.println(validateConnection(connString));
    }
    
    public static boolean validateConnection(String connString) {
    
        try {
            Class.forName("oracle.jdbc.driver.OracleDriver");
            Connection con = DriverManager.getConnection(connString, "x", "y");
        } catch (SQLException sqle) {
            if (sqle.getErrorCode() == 1017)
                return true;
        } catch (Exception e) {
            e.printStackTrace();
        }
    
        return false;
    }