我们有一个场景,它需要大约 10 秒来获取应用程序需要大约 10 秒才能从应用程序服务器获取 SQL 异常(声明登录被拒绝,因为用户 ID/密码组合无效)。
我写了一个小的java应用程序只是为了直接启动sql连接。
公共类 TestUsingJ2SE {
/**
* @param args
*/
public static void main(String[] args) {
Date start = new Date();
Connection conn = null;
Date end = new Date();
Properties connectionProps = new Properties();
connectionProps.put("user", "ivr_cds");
connectionProps.put("password", "something");
start = new Date();
try {
String url = "jdbc:oracle:thin:@localhost:1521:XE";
DriverManager.getDriver(url);
conn = DriverManager.getConnection(url, connectionProps);
} catch (Exception e) {
System.out.println("Driver Manager --> error ..." + e.getMessage());
}
end = new Date();
System.out.println("Using Driver Manager ..");
System.out.println("Started at:" + start + " and finished at:" + end);
System.out.println("Duration :" + (end.getTime() - start.getTime()));
}
}
我们发现 oracle 仍然需要 10 秒才能返回无效/用户名密码错误。我用于连接到 oracle 的 jar 是 ojdbc5.jar(JAVA 5 版本),因为我们的环境是在 WAS 6.1.2 上。
当我使用 ojdbc6.jar(JAVA 6 版本)并运行上述程序时,oracle 在 600 毫秒内返回无效的用户名/密码。
任何关于为什么会发生这种情况的线索,以及 Oracle 中是否有一些参数可以用来快速获取和出错,而不是 10 秒的延迟。
提前致谢。高拉夫