1.XA 서비스를 non-XA 모드로 호출할 때
1) OPENINFO에 NoLocal=true가 설정되어 있을 때
- 일단 tpbegin()을 호출하지 않았기 때문에 Transaction Context가 아니라서 xa_start()는 호출되지 않는다.
- 그런데, NoLocal=true가 설정되어 있으면 SQL 수행시 ORA-00155: cannot perform work outside of global transaction이 발생한다.
- 따라서 SQL error만 제대로 체크하는 루틴이 있으면 문제없다.
2) OPENINFO에 NoLocal=true가 설정되어 있지 않을 때
- 위와 마찬가지로 xa_start()는 호출되지 않는다.
- SQL은 Local transaction으로 수행된다.
- 위에서의 Local transaction에 대해서 COMMIT/ROLLBACK 명령이 없으므로
- 이 상태에서 XA 모드로 서비스를 호출하게 되면 LIBTUX_CAT:481: ERROR: Service xa_start returned -9 발생
- 이 경우에는 서버를 Rebooting하여야 한다.
2.non-XA 서비스를 XA 모드로 호출할 때
1) tpcall() 시에 에러가 발생하며, tperrno=14(TPETRAN)이다.
2) 이 경우에는 tpcall()의 flag에 TPNOTRAN을 설정하거나 tpbegin()을 호출하지 않은 상태에서 tpcall()을 수행하여야 한다.
3.xa_start() returned -9
1) 위의 경우에서도 보인 바와 같이 Transaction이 Local transaction으로 진입한 이후에
2) 정상적인 COMMIT/ROLLBACK 명령을 수행하지 않고
3) XA 모드로 다시 서비스를 호출하면 발생한다.
4) 서버를 Rebooting하여야 한다.
5) 위의 경우처럼 XA 서비스를 non-XA 모드로 호출하였다가 XA 모드로 호출하는 경우라든가
6) Timeout 등에 의해 xa Session이 끊어진 이후에 에러 처리를 제대로 하지 않아서
7) Local Transaction으로 진입한 경우가 있다.
'▶ Tuxedo > 이슈' 카테고리의 다른 글
FireWall을 위한 Tuxedo 구성 (0) | 2010.05.02 |
---|---|
TIME_WAIT 상태시간 줄이기 (0) | 2010.05.02 |
서버의 상태가 계속적으로 Cleaning 혹은 Restarting 상태로 남아 있음. (0) | 2010.05.02 |
FML32 사용상의 주의점 (0) | 2010.05.02 |
Caching된 Field table의 Reload 방법 (0) | 2010.05.02 |