※ TAF (Transparent Application Failover)
(FAILOVER=YES)
(FAILOVER_MODE=(TYPE=SESSION)(METHOD=BASIC))
# FAILOVER_MODE TYPE
- NONE : 그냥 실패된다. 세션이 끊어지기 때문에 새롭게 다시 접속해야 한다. CTF 와 비슷하다.
- SESSION : 접속한 노드의 인스턴스가 내려가면서 수행하고 있는 SQL (select) 문장은 취소되고
살아있는 쪽의 인스턴스로 자동 접속된다.
- SELECT : 접속한 노드의 인스턴스가 내려가면서
살아있는 쪽의 인스턴스로 자동 접속되고 + 새로 접속한 인스턴스에서 SQL 문이 수행된다.
# METHOD=BASIC: 장애가 발생할 경우 다른 서버를 찾아서 접속을 시도하는 방식
# (FAILOVER_MODE=(TYPE=SESSION)(METHOD=BASIC)) 방식
tnsnames.ora 파일 racdb_taf 부분 다시 수정하기 (파란색으로 표시해놓은 부분만 고치면 된다) > 저장
racdb_taf =
(DESCRIPTION =
(LOAD_BALANCE = YES)(FAILOVER=YES)
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.56.111)(PORT =1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.56.112)(PORT =1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = racdb)
(FAILOVER_MODE = (TYPE = SELECT)(METHOD = BASIC))
)
)
<<client session>> 명령 프롬프트 창으로 새롭게 접속하기
C:\Users\itwill>sqlplus sys/oracle@racdb_taf as sysdba
SQL> select instance_name from v$instance;
rac1 노드로 접속해 있다.
준비 작업하기: 수행하지 말고 준비만 해놓기
<<client session>>
SQL> select * from dba_objects;
<< server session >>
[oracle@rac2 ~]$ srvctl stop instance -d racdb -i racdb1
클라이언트가 접속해 있는 racdb1 내리기
수행하기
<<client session>>
SQL> select * from dba_objects;
(중간에 잠깐 멈추는 건 이미 접속해 있던 노드가 내려간 것을 감지하고
다른 쪽 노드로 가서 붙느라 그런 것)
롱 쿼리 문장이라서 그런지 어마어마하게 오래 걸린다... 안끝나...
<< server session >>
[oracle@rac2 ~]$ srvctl stop instance -d racdb -i racdb1
길고 긴 시간이 흐른 후...
# 드디어 수행 끝
와... 험난했다...
근데 수행시간에 비해서 데이터 건수가...
꼴랑 72171 건 수행하는데 시간을 그렇게 많이 잡아먹었던거야?...
<< server session >> 퍼티 rac2 창에서
노드 상태 확인하기
[oracle@rac2 ~]$ srvctl status instance -d racdb -i racdb1,racdb2
Instance racdb1 is not running on node rac1
Instance racdb2 is running on node rac2
<< client session >> cmd 창에서
다시 어떤 쪽 노드에 접속했는지 확인해보기: rac2로 알아서 접속해 있다.
SQL> select instance_name from v$instance;
INSTANCE_NAME
--------------------------------
racdb2
<< server session >> 퍼티에서
다시 모든 노드 올려놓기
[oracle@rac2 ~]$ crs_start -all
노드 상태 확인하기
[oracle@rac2 ~]$ srvctl status instance -d racdb -i racdb1,racdb2
Instance racdb1 is running on node rac1
Instance racdb2 is running on node rac2