01.오라클/001.DB 관리

[오라클]RAC 리스너 / TNS / JDBC(OCI, THIN) 설정

redkite 2012. 12. 19. 16:46

- 업무 파티션을 하고자 할 경우 각 업무별로 장애가 발생하지 않는 평시에
  RACDB1으로 접속하여 사용할 것인지 RACDB2로 접속하여 사용할 것인지를 결정하여야 함.
- 업무파티션의 기준은 각각의 노드에서 테이블 단위의 DML(INSERT,UPDATE,DELETE)이
  최소화되도록 설계하여야 함.

 

1. 리스너 설정(listener.ora)
   -----------------------
   # Local Listener를 사용하도록 설정(RACDB1)

   LISTENER_HOSTNAME1 =
     (DESCRIPTION_LIST =
       (DESCRIPTION =
         (ADDRESS = (PROTOCOL = TCP)(HOST = VIP_HOSTNAME1)(PORT = 1521)(IP=FIRST))
         (ADDRESS = (PROTOCOL = TCP)(HOST = HOSTNAME1)    (PORT = 1521)(IP=FIRST))
         (ADDRESS = (PROTOCOL = IPC)(KEY = extproc))
       )
     )
   
   SID_LIST_LISTENER_HOSTNAME1 =
     (SID_LIST =
       (SID_DESC =
         (SID_NAME = PLSExtProc)
         (ORACLE_HOME = /oracle/app/oracle/product/10.2.0/db_1)
         (PROGRAM = extproc)
       )
     )

 

2. TNS(tnsnames.ora) 설정 필요 - JDBC OCI 방식
   ----------------------------------------------

    # JDBC OCI 방식으로 설정하여 사용하고자 할 경우 TNS설정이 필요하며
    # RACDB에 접속하는 방식은 SQL*Net을 사용하게 됨
    # (SELECT인 것만 FAILOVER할 수 있도록 설정한 예, 주로 많이 사용하는 설정)

   TNS_RACDB1 = (DESCRIPTION=
                 (LOAD_BALANCE=OFF)
                 (FAILOVER=ON)
                 (ADDRESS=(PROTOCOL=TCP)(HOST=VIP_HOSTNAME1)(PORT=1521))
                 (ADDRESS=(PROTOCOL=TCP)(HOST=VIP_HOSTNAME2)(PORT=1521))
                 (CONNECT_DATA = (SERVER = DEDICATED)
                                 (SERVICE_NAME = RACDB)
                                 (FAILOVER_MODE=(TYPE=SELECT)(METHOD=BASIC))
                 )
             )
   
   TNS_RACDB2 = (DESCRIPTION=
                 (LOAD_BALANCE=OFF)
                 (FAILOVER=ON)
                 (ADDRESS=(PROTOCOL=TCP)(HOST=VIP_HOSTNAME2)(PORT=1521))
                 (ADDRESS=(PROTOCOL=TCP)(HOST=VIP_HOSTNAME1)(PORT=1521))
                 (CONNECT_DATA = (SERVER = DEDICATED)
                                 (SERVICE_NAME = RACDB)
                                 (FAILOVER_MODE=(TYPE=SELECT)(METHOD=BASIC))
                 )
             )

 

     1]  RACDB1에 접속하고자 하는 설정
          jdbc:oracle:oci:@TNS_RACDB1

 

     2  RACDB2 접속하고자 하는 설정
          jdbc:oracle:oci:@TNS_RACDB2


3. TNS(tnsnames.ora) 설정 필요없음 - JDBC thin 방식
   -----------------------------------------------

   1] RACDB1에 접속하고자 하는 설정
      jdbc:oracle:thin:@(DESCRIPTION=
                           (FAIL_OVER=ON)
                           (LOAD_BALANCE=OFF)
                           (ADDRESS=(PROTOCOL=TCP)(HOST=100.100.52.111)(PORT=1521)) # RACDB1 Virtual-IP 사용
                           (ADDRESS=(PROTOCOL=TCP)(HOST=100.100.52.112)(PORT=1521)) # RACDB2 Virtual-IP 사용
                           (CONNECT_DATA=(SERVICE_NAME=RACDB)))

 

   2] RACDB2에 접속하고자 하는 설정
      jdbc:oracle:thin:@(DESCRIPTION=
                           (FAIL_OVER=ON)
                           (LOAD_BALANCE=OFF)
                           (ADDRESS=(PROTOCOL=TCP)(HOST=100.100.52.112)(PORT=1521)) # RACDB2 Virtual-IP 사용
                           (ADDRESS=(PROTOCOL=TCP)(HOST=100.100.52.111)(PORT=1521)) # RACDB1 Virtual-IP 사용
                           (CONNECT_DATA=(SERVICE_NAME=RACDB)))