JDBC 連接遠端 Oracle 失敗,控制台拋出 SQLException 或連線逾時。
catch (SQLException e) { e.printStackTrace(); } 中輸出完整錯誤,包含 Error Code、SQLState、訊息。// 傳統 Thin Driver 格式
jdbc:oracle:thin:@//host:port/service_name
// 或 SID 格式
jdbc:oracle:thin:@host:port:SID
確認 host、port(預設 1521)、service_name/SID 正確。com.oracle.database.jdbc:ojdbc8:21.1.0.0(或對應版本)。listener.ora 監聽正確 IP/埠。telnet host 1521 通聯。OPEN。READY(lsnrctl status)。| Error Code | 常見原因 |
|---|---|
| ORA-12541 | 無監聽器(Listener 未啟動或埠錯誤) |
| ORA-12514 | Listener 不認得服務名(SID/Service Name 錯誤) |
| ORA-01017 | 帳號/密碼錯誤 |
| ORA-28000 | 帳號被鎖定 |
| ORA-12170 | 連線逾時(防火牆/網路不通) |
import java.sql.*;
public class TestOracleConn {
public static void main(String[] args) {
String url = "jdbc:oracle:thin:@//192.168.1.100:1521/ORCL";
String user = "scott";
String pwd = "tiger";
try (Connection conn = DriverManager.getConnection(url, user, pwd)) {
System.out.println("連線成功!");
DatabaseMetaData meta = conn.getMetaData();
System.out.println("Driver: " + meta.getDriverName());
System.out.println("DB Version: " + meta.getDatabaseProductVersion());
} catch (SQLException e) {
e.printStackTrace(); // 關鍵:看完整堆疊
}
}
}