My Oracle Support Banner

다양한 In-Doubt 트랜잭션 상황의 해결 방법 (Doc ID 1921189.1)

Last updated on FEBRUARY 03, 2019

적용 대상:

Oracle Database - Enterprise Edition - 버전 9.2.0.1 to 12.1.0.1 [릴리즈 9.2 to 12.1]
이 문서의 내용은 모든 플랫폼에 적용됩니다.



목적

이 노트는 IN-DOUBT 트랜잰션을 분석하거나, 조금 더 배우고자 하는 고객을 위한 추가적인 지원을 목적으로 한다.

 

범위

이 노트는 실패된 분산 트랜잭션 예제와 수동으로 해결하는 방법에 대해 제공한다.
2단계 커밋의 각각 다른 단계에서의 실패사례를 확인하고 문제해결 방법에 대해 배운다.

노트의 맨 마지막에 첨부된 스크립트로 분산트랙잭션 실패 케이스에 대한 구현이 가능하며, 고객의 상황에 맞게 수정이 가능하다.

실제상화에서는 일반적으로 아래의 상황에 대한 해결이 필요하게 된다.
- 중요 데이타 또는 ROLLBACK SEGMENT 에 대한 락을 점유한 IN-DOUBT 트랜잭션.
- 문제가 발생한 서버, 네트웍 또는 운영프로그램을 신속히 복구할수 없는 경우.

오라클 인스턴스의 RECO 백그라운드 프로세스(분산 복구 프로세스)는 문제가 발생한 서버, 네트웍 또는 운영프로그램이 복구되면,
분산 트랜잭션 관련된 오류를 해결한다.
RECO 프로세스가 문제의 트랜잭션을 해결하기 전까지, 데이타는 읽기/쓰기 모두 LOCKED 된다. 데이타 조회에 대해 어느 시점의
데이타를 제공해야하는지 판단을 할 수 없으므로 읽기도 차단한다.

여기에서 설명하는 정보는 모두 순수 ORACLE 분산트랜잭션에만 관련된 것임을 주의 해야 한다.
전적으로 ORACLE 내에서만 발생하는 즉 ORACLE이 트랜잭션의 흐름을 조정하는 경우이다.
ORACLE 이외에 트랜잭션을 조정할 수 있는 프로그램들이 사용되기도 한다. 그중에 하나가 X/A 인터페이스를 사용하는 TUXEDO 이다.
또는 TRANSPARENT GATEWAY를 통해 ORACLE이 아닌 타 DBMS 와의 분산트랜잭션 상황일수도 있다.
이 두 경우 모두 본 문서 범위에 해당하지 않는다.

여기에서 제공되는 예제들은, 일반적인 구성인 2 노드 사이의 분산트랙잭션으로 제한 한다.

오라클내에서 이루어지는 2단계 커밋이나 분산트랜잭션에 대해 익숙하지 않다면, 노트 하단에 첨부된 추가적인 문서를 참고할 수 있다.
추가적인 문서에서는 오라클 분산 시스템에 관련된 배경 지식과 용어에 대한 정보를 제공한다.

 

상세 내역

To view full details, sign in with your My Oracle Support account.

Don't have a My Oracle Support account? Click to get started!


My Oracle Support provides customers with access to over a million knowledge articles and a vibrant support community of peers and Oracle experts.