문서유형ㅣ장애해결
분야ㅣ모니터링/점검
적용제품버전ㅣ6FS06
문서번호ㅣTMOTS021
현상
slog에 ERROR_XA_PROTO(-25001)가 발생하며 서비스가 지연됩니다.
[I] Session is associated with some xa branch. XA request other than XA_END cannot be accepted. type=xa_start [I] THROW. ec=ERROR_XA_PROTO(-25001) [ XA protocol error. ] (csr_id:4294967295) [tbsvr_msg_xa.c:146:tbsvr_msg_xa_common]
원인
해당 세션에서 이미 처리하고 있는 분산 트랜잭션이 있으나, 다시 분산 트랙잭션을 시작하려는 요청이 오는 경우 이러한 현상이 발생합니다.
해결
DBA의 판단 하에 dba_2pc_pending을 조회해 수동으로 처리합니다.
이는, 분산 트랙잭션 프로토콜 상 in-doubt tx가 있을때 commit, rollback 여부를 DB가 자체적으로 판단할 수 없기 때문에 DBA의 판단이 필요합니다.
1. 대상 확인
DBA_2PC_PENDING 뷰는 현재 정체되고 있는 XA 트랜잭션 브랜치(XA Transaction Branch)의 정보를 보여주는 뷰입니다.
SQL> SELECT LOCAL_TRAN_ID, XID, STATUS FROM DBA_2PC_PENDING; LOCAL_TRAN_ID ------------------------------------- XID ------------------------------------- STATUS --------------- 2.16.18 1.1000.1000 PREPARED 1 selected.
2. Commit, Rollback 처리
원하는 XA 트랜잭션 브랜치에 커밋 명령을 실행할 수 있습니다. 이 때 해당 XA 트랜잭션 브랜치에서 점유하고 있던 리소스는 반환되고 해당 트랜잭션은 커밋됩니다.
- LOCAL_TRAN_ID = 트랜잭션 ID
SQL> SELECT LOCAL_TRAN_ID, XID, STATUS FROM DBA_2PC_PENDING; LOCAL_TRAN_ID ------------------------------------- XID ------------------------------------- STATUS --------------- 2.16.18 1.1000.1000 PREPARED 1 selected.
참고DBA_2PC_PENDING 뷰: 현재 정체되고 있는 XA 트랜잭션 브랜치(XA Transaction Branch)의 정보를 보여주는 뷰 입니다.