Java에서 Oracle 데이터베이스에 JDBC로 연결할 때, Service Name 또는 SID를 사용하는 두 가지 방식이 있습니다.
어떤 환경에서는 SID를, 또 어떤 경우에는 Service Name을 사용해야 하기도 하죠.
이 글에서는 Java Oracle JDBC 연결 시 Service Name과 SID를 사용하는 방법을 실제 코드 예제와 함께 비교해 드립니다.
DB 설정에 따라 어떤 URL을 써야 하는지 혼동될 때, 이 글이 정확한 가이드가 되어줄 것입니다.
🔸 Java에서 Oracle JDBC 연결 방식 개요
Oracle DB에 연결할 때 사용하는 식별자는 보통 두 가지입니다.
| 구분 | 설명 | 사용환경 |
| SID | DB 인스턴스 식별자 | 구형 Oracle (11g 등) |
| Service Name | 논리적인 서비스 이름 | 최신 Oracle (12c 이상) |
Java에서는 두 방식 모두 지원하며, JDBC URL 형식이 다릅니다.
✅ 1. Service Name으로 연결하기
Oracle 12c 이상에서는 일반적으로 Service Name 기반 연결을 사용합니다.
🔹 JDBC URL 형식
jdbc:oracle:thin:@//<호스트명>:<포트>/<서비스명>🔹 예제 코드
String url = "jdbc:oracle:thin:@//db.example.com:1521/myservice";
String user = "your_user";
String password = "your_password";
Connection conn = DriverManager.getConnection(url, user, password);✅ 2. SID로 연결하기
구형 Oracle에서는 SID 기반 연결이 일반적입니다.
🔹 JDBC URL 형식
jdbc:oracle:thin:@<호스트명>:<포트>:<SID>
🔹 예제 코드
String url = "jdbc:oracle:thin:@db.example.com:1521:ORCL";
String user = "your_user";
String password = "your_password";
Connection conn = DriverManager.getConnection(url, user, password);: 뒤의 ORCL은 DB 인스턴스의 SID입니다.
✅ 3. 차이점 요약
| 항목 | Service Name 방식 | SID 방식 |
| URL 형식 | @//host:port/service_name | @host:port:sid |
| 용도 | 논리적 DB 서비스 구분 | DB 인스턴스 직접 지정 |
| 권장 환경 | Oracle 12c 이상, RAC 환경 | Oracle 11g 이하, 단일 인스턴스 환경 |
| 검색어 예시 | java oracle jdbc service name 연결 | java oracle jdbc sid 연결 |
✅ 4. 연결 시 주의사항
- JDBC 드라이버는 Oracle thin 드라이버(ojdbc8.jar 등)를 사용
- 오타 주의: Service Name과 SID는 다릅니다!
- 정확한 값은 DBA에게 요청하거나 tnsnames.ora 파일에서 확인 가능
✅ 결론
Java에서 Oracle DB에 연결할 때 Service Name과 SID는 서로 다른 목적의 설정값입니다. 어떤 방식이 내 환경에 적합한지 파악한 뒤, 올바른 JDBC URL을 사용하는 것이 중요합니다. 위 코드 예제를 참고하여 빠르게 연결을 구성해 보세요.