새싹 DBA/Oracle

[Oracle] SID 와 Service_Name의 차이와 설정방법

LIMMI 2024. 4. 18. 10:10

오라클 DB를 처음 설치했을 때도 다른 DB에 연결할때도 tnsnames 파일의 SID 와 Service Name 이 무엇인지 궁금했다.

한개의 DB 서버에 한개의 인스턴스만을 사용할 때는 둘의 차이가 크지 않다.

하지만,

RAC (Real Application Cluster) 의 개념을 알고 나니 이해가 되었다.

RAC 가 구성되어 있을 때는 SID 로 접근하는 것 보다는 Service Name 을 사용하는게 더 효과적이다.


왜 그럴까?

SID : DB 인스턴스 1개
Service Nane : 여러개의 인스턴스를 묶어 하나의 서비스로 구성하는 것

 

RAC 환경의 경우 서버 한대에 여러대의 인스턴스(물리)가 있는 데, 각 인스턴스는 각각의 SID 가 존재한다.

SID로 접속할 경우 각각 다른 SID 로 접속해야 한다.

 

접속편의, 연속성 보장, SID 공개 문제 등을 보아 

SID 를 묶어 하나의 서비스로 구성한 Service Name 으로의 접근이 더 효과적이라고 할 수 있다. 

 

Service Name = SID1 +SID2 + SID3

tnsnames.ora 파일에서의 작성

TESTDB =
	(Description =
     (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 10.112.42.56)(PORT = 1521))
     )
     (CONNECT_DATA =
      (SERVICE_NAME = ORCL)
     )
    )

 

JDBC를 사용하여 접근 시 URL 작성

# SID >  ':' 사용
jdbc:oracle:thin:@10.112.42.56:ORA1

# SERVICE_NAME >  '/' 사용
jdbc:oracle:thin:@10.112.42.56/ORA1