개발/Database

[ORACLE] SID와 Service Name 차이점

Hide 2025. 2. 4. 23:33

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 이 무엇이고, 어떻게 사용되는지 차이점을 알아보았다.