오라클 SID 여러개 - olakeul SID yeoleogae

오라클 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;