Oracle RAC Failover


 1.FailOver 구성

 

  ① CTF(Connection Time Failover)

  • 기본적으로 RACA 구성하면 적용 .

  ② TAF(Transparent Application Failover)

  • TAF 별도의 구성작업 필요.

TAF_11G_TEST =

(DESCRIPTION = (LOAD_BALANCE=ON) (FAIL_OVER=ON)

(ADDRESS_LIST=

(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.20X)(PORT = 1521))

(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.20X)(PORT = 1521)))

(CONNECT_DATA=

(SERVICE_NAME = RAC)

(FAILOVER_MODE=

(TYPE=select)

(METHOD=PRECONNECT)

)

)

   

TYPE

1) Session : select fetch중에 Fail 발생 / Long Query 수행 재실행 필요

2) Select : Fetch중에 Fail 발생하더라도 Fetch 계속 / Fail시점에 부하 증가

METHOD

1) BASIC : Fail-Over 시점에 Connection 시도 / Fail 시점에 부하증가

2) Preconnect : Fail 시점이 아닌 Initial Connection 맺어 놓음 / Memory 사용량 증가(PGA)

   

  ③ JDBC FailOver 설정

jdbc:oracle:thin:@(DESCRIPTION= (LOAD_BALANCE=OFF)(FAILOVER=ON) (ADDRESS=(PROTOCOL=TCP) (HOST=서버주소1) (PORT=1521)) (ADDRESS=(PROTOCOL=TCP) (HOST=서버주소2) (PORT=1521)) (CONNECT_DATA=(SERVICE_NAME=서비스네임)))

 <pre>jdbc:oracle:thin:@(DESCRIPTION=(LOAD_BALANCE=OFF)(FAILOVER=ON)(ADDRESS=(PROTOCOL=TCP) (HOST=서버주소1) (PORT=1521))(ADDRESS=(PROTOCOL=TCP) (HOST=서버주소2) (PORT=1521))(CONNECT_DATA=(SERVICE_NAME=서비스네임)))

   

 2.FailOver TEST Scenario

Target

설명

비고

동작 후 상태

예상결과

Node 1

네트워크 1번 장애시 서비스 정상 유무 확인

Node1에 미리 접속되어있는 세션 alive 여부 확인

Listener shutdown

신규 세션은 2번노드로 접속

Node 2

네트워크 1번 장애시 서비스 정상 유무 확인

Node2에 미리 접속되어있는 세션 alive 여부 확인

Listener shutdown

신규 세션은 1번노드로 접속

Node 1

VIP FAILBACK 확인

  

  

  

Node 2

VIP FAILBACK 확인

  

  

  

Node 1, 2

Private Network 라인 절체 ( 브레인 스플릿 )

기존 세션 alive 여부 확인

CRS 재기동 후 통신X

신규 세션은 1번노드로 접속

Node 1

/etc/hosts의 VIP address 변경 후 cluster 시작

  

  

IP 관련 에러메시지와 함께 cluster(CRS) 시작 불가

Node 2

/etc/hosts의 VIP address 변경 후 cluster 시작

  

  

IP 관련 에러메시지와 함께 cluster(CRS) 시작 불가

Node 1

srvctl stop instance -d SID -i SID1

Node1에 미리 접속되어있는 세션 alive 여부 확인

Instance shutdown

신규 세션은 2번노드로 접속

Node 2

srvctl stop instance -d SID -i SID2

Node2에 미리 접속되어있는 세션 alive 여부 확인

Instance shutdown

신규 세션은 1번노드로 접속

Node 1

shutdown immediate

Node1에 미리 접속되어있는 세션 alive 여부 확인

  

신규 세션은 2번노드로 접속

Node 2

shutdown immediate

Node2에 미리 접속되어있는 세션 alive 여부 확인

  

신규 세션은 1번노드로 접속

Node 1

SID1의 oracle Instance의 smon을 kill로 죽였을 경우

  

Instance 재기동

신규 세션은 2번노드로 접속후 DB 재기동 후 다시 1번노드로 정상접속

Node 2

SID 2의 oracle Instance의 smon을 kill로 죽였을 경우

  

Instance 재기동

신규 세션은 1번노드로 접속후 DB 재기동 후 다시 2번노드로 정상접속

Node 1

srvctl stop listener -n node1

  

Listener shutdown

신규 세션은 2번노드로 접속, 기존세션 영향X

Node 2

srvctl stop listener -n node2

  

Listener shutdown

신규 세션은 1번노드로 접속, 기존세션 영향X

Node 1

Listener Process를 kill로 죽였을 경우

  

CRS가 Listener 재기동

신규 세션은 2번노드로 접속후 리스너 재기동 후 다시 1번노드로 정상접속, 기존세션 영향X

Node 2

Listener Process를 kill로 죽였을 경우

  

CRS가 Listener 재기동

신규 세션은 1번노드로 접속후 리스너 재기동 후 다시 2번노드로 정상접속, 기존세션 영향X

Node 1

crsctl stop crs

Node1에 미리 접속되어있는 세션 alive 여부 확인

CRS정지

신규 세션은 2번노드로 접속

Node 2

crsctl stop crs

Node2에 미리 접속되어있는 세션 alive 여부 확인

CRS정지

신규 세션은 1번노드로 접속

Node 1

kill -9

Node1에 미리 접속되어있는 세션 alive 여부 확인

즉시 재기동

영향 없음

Node 2

kill -9

Node2에 미리 접속되어있는 세션 alive 여부 확인

즉시 재기동

영향 없음

Node 1

kill -9

Node1에 미리 접속되어있는 세션 alive 여부 확인

즉시 재기동

영향 없음

Node 2

kill -9

Node2에 미리 접속되어있는 세션 alive 여부 확인

즉시 재기동

영향 없음

Node 1

kill -9

Node1에 미리 접속되어있는 세션 alive 여부 확인

ohasd.bin restart

영향 없음

Node 2

kill -9

Node2에 미리 접속되어있는 세션 alive 여부 확인

ohasd.bin restart

영향 없음

Node 1

kill -9

Node1에 미리 접속되어있는 세션 alive 여부 확인

즉시 서버 리부트

신규 세션은 2번노드로 접속

Node 2

kill -9

Node2에 미리 접속되어있는 세션 alive 여부 확인

즉시 서버 리부트

신규 세션은 1번노드로 접속

Node 1

kill -9

Node1에 미리 접속되어있는 세션 alive 여부 확인

즉시 서버 리부트

신규 세션은 2번노드로 접속

Node 2

kill -9

Node2에 미리 접속되어있는 세션 alive 여부 확인

즉시 서버 리부트

신규 세션은 1번노드로 접속

Node 1

shutdown -r now(init 6)

  

서버 다운

신규 세션은 2번노드로 접속

Node 2

shutdown -r now(init 6)

  

서버 다운

신규 세션은 1번노드로 접속

Node 1

전원 off

Node1에 미리 접속되어있는 세션 alive 여부 확인

서버 다운

신규 세션은 2번노드로 접속

Node 2

전원 off

Node2에 미리 접속되어있는 세션 alive 여부 확인

서버 다운

신규 세션은 1번노드로 접속

 


블로그 이미지

운명을바꾸는자

IT와 함께 살아가는 삶

,