TRANSACTIONTIMEOUT

유효 기간

Replicat

설명

커밋되지 않은 Replicat 대상 트랜잭션이 대상 테이블에 대한 잠금을 보유하고 데이터베이스 리소스를 불필요하게 소비하지 않도록 하려면 TRANSACTIONTIMEOUT 매개변수를 사용합니다. Replicat가 기존 응용 프로그램 시간 초과 및 대상의 기타 데이터베이스 요구 사항 내에서 작동할 수 있도록 이 매개변수의 값을 변경할 수 있습니다.

TRANSACTIONTIMEOUT는 해당 트랜잭션의 마지막 소스 트랜잭션에 대한 트랜잭션 종료 레코드를 수신하지 않은 경우 Replicat가 대상 트랜잭션을 열린 상태로 유지하는 시간을 제한합니다. 기본적으로 Replicat는 성능을 향상시키기 위해 여러 소스 트랜잭션을 하나의 대상 트랜잭션으로 그룹화하지만 부분 소스 트랜잭션을 커밋하지 않으며 해당 마지막 레코드에 대해 무기한 대기합니다. Replicat 매개변수 GROUPTRANSOPS는 그룹화된 대상 트랜잭션의 최소 크기를 제어합니다. 범위는 1-604800입니다.

다음 이벤트는 TRANSACTIONTIMEOUT를 트리거할 만큼 오래 지속될 수 있습니다.

TRANSACTIONTIMEOUT 작동 방식

정상 작업 중 Replicat는 트랜잭션을 비정상 종료하고 재시도해야 하는 경우를 대비하여 현재 대상 트랜잭션에서 첫번째 소스 트랜잭션 시작 추적의 위치를 기억합니다. TRANSACTIONTIMEOUT가 사용으로 설정된 경우 Replicat는 현재 소스 트랜잭션의 첫번째 레코드 위치도 저장하고 TRANSACTIONTIMEOUT가 트리거된 경우 해당 위치를 EOF(논리적 파일 끝)로 사용합니다.

트리거될 때 TRANSACTIONTIMEOUT는 다음을 수행합니다.

  1. 현재 대상 트랜잭션을 중단합니다.

  2. 중단된 대상 트랜잭션에서 첫번째 소스 트랜잭션의 시작 위치로 이동합니다.

  3. 논리적 파일 끝 위치(마지막 미완료 소스 트랜잭션의 시작 부분)까지의 모든 트레일 레코드를 처리합니다.

  4. 논리적 EOF 지점에서 트랜잭션을 커밋합니다.

  5. 더 많은 추적 레코드를 처리하기 전에 새 추적 데이터를 기다립니다.

TRANSACTIONTIMEOUT는 추적 데이터가 TRANSACTIONTIMEOUT를 트리거할 만큼 느리게 도착하도록 하는 문제의 특성에 따라 동일한 소스 트랜잭션에 대해 여러 번 트리거될 수 있습니다.

TRANSACTIONTIMEOUT 조건 감지

TRANSACTIONTIMEOUT가 사용으로 설정된 경우 Replicat가 나머지 소스 트랜잭션을 대기 중인지 여부를 확인하려면 SEND REPLICAT 명령을 STATUS 옵션과 함께 실행합니다. 다음 상태는 이 조건을 나타냅니다.

Performing transaction timeout recovery
Waiting for data at logical EOF after transaction timeout recovery

기본값

사용 안함

구문

TRANSACTIONTIMEOUT <n> <units>

<n>

대기 간격을 지정하는 정수입니다. 적합한 값은 1초에서 1주(7일) 사이입니다. 이 값은 기본 Extract 및 연관된 데이터 펌프 모두에서 EOFDELAY 매개변수를 사용하여 설정된 값보다 커야 합니다.

<units>

다음 중 하나: S, SEC, SECS, SECOND, SECONDS, MIN, MINS, MINUTE, MINUTES, HOUR, HOURS, DAY, DAYS.

예제

TRANSACTIONTIMEOUT 5 S