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