[ORACLE] SID와 Service Name 차이점
jdbc를 사용하면서, oracle 접속 방식에 sid 접속 방식과 service name 접속 방식이 있어 둘의 차이점을 알아보려고 한다.
SID란?
오라클 데이터베이스를 고유하게 식별하는 문자열로, DB 서버에 여러개의 인스턴스가 존재할 수 있다. 오라클 인스턴스는 유일 SID를 가지며 DB 실행 시 자동 설정되는 값으로, 보통 DB를 설치할때 지정한다.
SELECT INSTANCE FROM v$thread; 로 확인할 수 있다.
ServiceName이란?
오라클 DB에 접속 시 사용되는 서비스 식별자로, 클라이언트 응용 프로그램이 오라클 DB와 통신 시 사용되는 문자열로 오라클 DB 에 클라이언트가 접속하면, 서비스 이름을 지정하여 DB 인스턴스에 연결한다. DB는 한번에 여러개 서비스를 호스팅할수 있으며, 각 서비스는 고유한 서비스 이름을 가질 수 있다. tnsnames.ora 파일에서 확인할 수 있다.
SELECT name, db_unique_name FROM v$database; 로 확인할 수 있다.
. tnsnames.ora파일은 예시이다.
<서비스 이름> =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = <호스트 이름 또는 IP 주소>)(PORT = <포트 번호>))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = <데이터베이스 서비스 이름>)
)
)
SID를 여러개 구성하면 다른 메모리를 구성하고, 파라미터를 설정하고 DB 객체등을 가질 수 있어 DB 특정 요구사항에 맞도록 최적화한 설정이 가능하다. DB간 접근 권한을 분리할 수 있고 중요한 데이터를 보호할 수 있으며 여러 인스턴스로 부하를 분산시킬 수 있다. 특정 DB에 부하가 가더라도 다른 DB에 영향이 미치지 않도록 설정 가능하다. 여러 DB 인스턴스를 사용하면 고가용성 및 장애 복구를 구현 할 수 있어, 한 DB가 장애를 겪더라도 다른 DB는 가용하도록 유지 가능하다.
오늘은 ORACLE에서 SID와 ServiceName 이 무엇이고, 어떻게 사용되는지 차이점을 알아보았다.