1. TUXWA4ORACLE 옵션 관련
이 옵션은 xa_start()를 시도한 후에 XAER_RMFAIL ( -7 ) 값을 받을 경우 그 이후로 DB와의 연결이 비정상이라서, TP-Monitor 는 xa_open 을 이용하여 재 연결 시도를 합니다.
그런데 이 시점에서 TUXWA4ORACLE를 환경변수에 셋팅을 하게 되면 기존 DB 와 연결된 세션을 xa_close()를 통하여 해당 세션을 끊고 xa_open() 를 처리합니다.
결국 TUXWA4ORACLE 의 설정 여부는 위의 xa_close() 를 내부적으로 한번 시도해주는 의미 입니다.
TUXWA4ORACLE 옵션이 생기게 된 이유는 oracle 7.x 버전 때 버그인해서 tuxedo 6.3 부터 쓰인 것인데요.
기 존 oracle 7.x 버전때 XAER_RMFAIL 가 발생되었을때 명시적으로 close 가 이루어지지 않아서, 즉 기존 연결된 세션이 정상적으로 끊어지지 않아서 해당 xa_close() 를 내부적으로 날리는 로직이 추가된 것입니다.
이 옵션은 Oralce 이 버전이 업그레이드 되면서 XAER_RMFAIL발생시 close 가 잘되는 형태로 버그가 fix 되었기 때문에 해당 문제는 상위 버전의 Oracle 에서는 다른 DB 에서도 마찬가지로 이 옵션은 유효하므로 다른 DB 에서도 동일 기능을 위해 사용이 가능합니다.
2. Tuxedo RM reconnect 관련
아시다시피 간단히 정리하면 XA 스펙상으로 DB로 부터 XAER_RMFAIL 을 받았을때 명시적으로 reconnect 하라는 내용은 없습니다.
그러나 부분적으로 Tuxedo 에서는 reconnect 시도를 합니다.
XA, non-XA 로 나누어서 이야기 해보면...
XA 는 위에서 언급한것 처럼 RM 으로부터 XAER_RMFAIL를 받으면 부분적으로 reconnection 을 시도합니다. 부분적이라는 의미는 무조건 reconnect 를 해야 하는 의무가 tuxedo 에 없다는 것입니다. 이부분을 고객이 혼동을 잘 합니다 . 예를들어 고객께서는 DB가 무조건 내려갔다 올라오면 tuxedo 는 무조건 reconnect 해야 한다 라고 생각할수 있는데요. 그것은 명확히 맞지 않습니다.
non-XA 에서는 tuxedo xa_open 을 명시적으로 하지 않기 때문에 개발로직에 의해서 reconnect 가 되거나 application server 자체를 reboot 을해야 합니다.
다시말새 non-xa 부분은 tuxedo 에서 특별하게 처리하는 것은 없습니다.
3. RAC 환경에서 tuxedo reconnect 관련
Oracle RAC 환경에서 tuxedo reconnect 관련된 사항은 CTF 이든 TAF 이든 상관없이 위에서 언급한 부분적인 reconnect 관련 로직에 의해서 Tuxedo 가 처리합니다.
나머지 자동 reconnect 되는 부분은 TAF 에 존재하지만 그 기능 자체는 Oracle 의 기능입니다. tuxedo 와는 무관한 기능입니다
=========================
위 내용과 같이 Tuxedo에서 무조건retry를 해야하는 의무가 없는 부분 이며, 따로 스케쥴링이 되어 reconnect를 시도 하는 행위 등은 존재하지 않습니다.
'▶ Tuxedo > 기술자료' 카테고리의 다른 글
TPEBADDESC 오류 (0) | 2011.10.31 |
---|---|
LIBTUX_CAT:1526 오류 (0) | 2011.10.31 |
keepalive란 ? (0) | 2011.10.31 |
Tuxedo 서비스 개발시 유의사항(AIX) (0) | 2010.11.16 |
Building the Tuxedo MQ Adapter (0) | 2010.05.02 |