오라클 DB 접근할 때 SID 와 Service Name의 차이가 무엇일까 생각해본적이 있다.

특히 개발환경 또는 한개의 DB서버의 한개의 인스턴스만을 사용할때는 구분이 필요 없었다.

 

하지만 RAC(Real Application Cluser)  을 구성하게 되면

SID로 접근하기 보다는 Sevice Name을 사용하는게 더욱 효과적이다.

 

왜 그럴까?

SID : DB 인스턴스 1개

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

 

쉽게 말해서, 서버 한대에 여러개의 인스턴스가 있을 경우 각각의 인스턴스에는 서로 다른 SID가 있다.

SID로 접근할 경우 별도 다른 SID로 각각 접속해야 하는 것이다.

접속편의와 연속성 보장, SID 공개의 문제 등을 고려했을 때 이 SID를 묶어 하나의 서비스로 구성한

Service Name을 통한 접근이 더욱 효과적이다.

tnsnames.ora 에서는 이렇게 작성한다.

TESTDB=
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 10.253.11.13)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = ORCL)
    )
  )

 

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

SID > : 을 사용

jdbc:oracle:thin:@10.253.11.13:ORA1  

Service Name> / 을 사용 

jdbc:oracle:thin:@10.253.11.13/ORA1  

 

 

Service Name과 SID 확인 방법은?

--Service Name 확인 방법
SELECT NAME, DB_UNIQUE_NAME FROM v$database; 

--SID 확인 방법
SELECT instance FROM v$thread; 

 

 

 

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기