Java에서 Oracle 데이터베이스에 연결할 때 가장 중요한 요소 중 하나가 바로 JDBC 접속 방식입니다.
이 글에서는 Oracle 접속 시 사용하는 SID 방식과 Service Name 방식의 차이, JDBC URL 작성법, 오류 없이 연결하는 팁까지 정리했습니다.
특히 실무에서 자주 마주치는 "ORA-12505" 같은 에러도 대부분 이 차이에서 발생하므로, 정확히 이해하고 설정하는 것이 중요합니다.
🔹 1. JDBC로 Oracle 연결할 때 접속 방식은 2가지
Oracle은 다음 두 가지 방식으로 접속할 수 있습니다.
접속방식 | 설명 | 예시 URL |
SID 방식 | 인스턴스를 직접 지정하여 접속 | jdbc:oracle:thin:@192.168.1.100:1521:ORCL |
Service Name 방식 | 논리적 서비스 이름으로 접속 (RAC, 클러스터 등에서 권장) | jdbc:oracle:thin:@//192.168.1.100:1521/orcl.example.com |
✅ 실무에서는 Service Name 방식이 더 안전하고 유연해서 대부분 사용됩니다.
🔹 2. SID와 Service Name 차이점 쉽게 이해하기
항목 | SID 방식 | Service Name 방식 |
연결 대상 | DB 인스턴스 직접 지정 | 논리적 서비스 이름으로 연결 (리스너 사용) |
사용 환경 | 단일 인스턴스, 간단한 설정 환경 | 다중 인스턴스, RAC, 로드 밸런싱 환경에 적합 |
연결 오류 발생 빈도 | 낮음 (정확한 SID 필요) | 높음 (서비스 이름 오타나 리스너 미등록 시) |
🔹 3. JDBC 접속 URL 예시 정리
✅ SID 방식
jdbc:oracle:thin:@<IP>:<PORT>:<SID>
예:
jdbc:oracle:thin:@192.168.1.100:1521:ORCL
✅ Service Name 방식 (권장)
jdbc:oracle:thin:@//<IP>:<PORT>/<SERVICE_NAME>
예:
jdbc:oracle:thin:@//192.168.1.100:1521/orcl.example.com
⚠️ @// ← 이 부분이 Service Name 방식에서 꼭 필요합니다.
🔹 4. 오라클 서버에서 SID와 Service Name 확인하는 SQL
-- SID 확인
SELECT INSTANCE_NAME FROM V$INSTANCE;
-- Service Name 확인
SELECT NAME FROM V$SERVICES;