DB/Oracle

[ADMIN] Oracle CTF VS TAF

밍구멍구 2024. 9. 20. 13:30
CTF(Connection Time Fail-Over)

 

기본 개념

- 데이터 베이스로 접속하는 순간 서버, DB, Listener 등 비정상적일 경우 다른 쪽 서버로 접속하는 것을 의미
- DB에 대해 쿼리가 진행중에 해당 DB에 오류가 발생하거나 비정상 동작이 발생할 경우 해당 커넥션을 버리고 정상적인 DB로 커넥션 맺음

 

TNSNAMES.ORA 설정 방법

instance_name =
(DESCRIPTION=
    (LOAD_BALANCE=OFF) -- 로그 밸런싱 여부 (생략가능)
    (FAILOVER=ON) -- CTF 기능 사용 여부
    (ADDRESS_LIST= (ADDRESS=(PROTOCOL=TCP)(HOST=vip)(PORT=1521))
     (ADDRESS=(PROTOCOL=TCP)(HOST=vip)(PORT=1521))
   (CONNECT_DATA=
          (SERVER = DEDICATED)
           (SERVICE_NAME=ora9i)
     )
   )
)

 

 

TFA (Run Time FailOver)

 

기본 개념

- DB에 대한 쿼리가 진행 중에 해당 DB에 오류가 발생하거나 비정상 동작이 발생할 경우 옵션에 따라 각각 동작 취함
- CTF와 상반이 아닌 Additional 한 개념으로 CTF동작과 옵션은 TAF에서도 적용
- Package의 Global 변수, Alter Session을 이용한 작업, 진행중인 Transaction, Temporary Table Data는 TAF 사용시에도 보장되지 못한다

 

TNSNAMES.ORA 설정 방법

instance_name =
     (DESCRIPTION=
     (LOAD_BALANCE=OFF)
     (FAILOVER=ON)
       (ADDRESS_LIST=
          (ADDRESS=(PROTOCOL=TCP)(HOST=vip)(PORT=1521))
           (ADDRESS=(PROTOCOL=TCP)(HOST=vip)(PORT=1521))
      (CONNECT_DATA= (SERVER = DEDICATED) (SERVICE_NAME=ora9i)
      (FAILOVER_MODE=(TYPE=SELECT/SESSION)(METHOD=BASIC/PRECONNECT)(DELAY=N SEC)(RETRIES=N SEC))
      )
     )
   )

 

옵션 설명

  • Mode : 장애 시 SQL수행 중 장애에 대한 동작을 결정 (session, select)
    session모드일 경우 session만 다른 DB로 넘어가고 SQL은 다시 수행해야 한다.
    select모드일 경우 수행하던 작업을 이어서 다른 DB에서 진행한다
  • Method : 장애 시점 이전에 connection을 맺는 방법을 결정(Basic, Preconnect)
    Basic메서드일 경우 장애 발생 시 다른 DB로 접속한다
    Preconnect메서드일 경우 최초 접속 시 다른 node에 미리 접속해 놓는다.
  • DELAY: TAF 가 장애 후에 BACKUP Session에 연결하려는 동안  기다리는 몇 초간의 지연 시간. (Default :1초)
  • RETRIES: TAF 가 장애 후에 BACKUP Session 에 연결하기 위해 시도하는 횟수 (DEFAULT :5초)