Google Spanner용 Replicat에서 일시적 및 영구적 오류 처리
Google Spanner에는 transient 또는 permanent의 두 가지 오류 범주가 있습니다. 일시적 오류를 재시도할 수 있지만 영구적 오류는 단순히 재시도만으로 해결할 수 없습니다. 트랜잭션을 재시도하기 전에 수정 조치를 수행해야 합니다.
일시적 및 영구적 오류의 세부정보와 Oracle GoldenGate Replicat에서의 처리 방법에 대해 알아봅니다.
Google Spanner에 대한 DML 작업 중 Replicat 오류 처리
Spanner에서 DML로 인해 트랜잭션 내의 오류(임시 또는 영구)가 발생하면 해당 트랜잭션은 유효하지 않고 사용할 수 없게 됩니다. 그러면 동일한 트랜잭션을 부분적으로 커밋하거나 재시도할 수 없습니다.
새 트랜잭션 객체를 사용하여 해당 트랜잭션의 모든 DML을 재시도해야 합니다. 실패한 DML만 부적합한 트랜잭션 내에서 재시도할 수 없습니다.
중복 Primary Key 및 행을 찾을 수 없는 오류의 경우 DML 레벨 REPERROR를 사용해야 합니다. 다른 모든 Google Cloud Spanner 오류의 경우 트랜잭션 레벨 REPERROR 처리가 사용됩니다.
Spanner의 다른 모든 오류의 경우 트랜잭션 레벨 REPERROR 처리만 지원됩니다. Google Cloud Spanner에 대해 지원되는 REPERROR 작업은 TRANSDISCARD, TRANSEXCEPTION, TRANSABORT입니다.
Oracle GoldenGate에 대한 매개변수 및 함수 참조의 REPERROR를 참조하십시오.
임시 오류 처리
일시적 오류는 재시도 시 성공할 가능성이 높은 임시 조건을 나타냅니다. 이러한 오류를 감지할 때는 REPERROR를 사용하여 트랜잭션을 재시도하는 것이 좋습니다.
다음은 일시적 오류 처리를 위한 REPERROR 전략입니다.
구문:
REPERROR (*status code*, TRANSABORT, MAXRETRIES *n*, DELAYSECS *n*)
-
TRANSABORT: 전체 트랜잭션을 재시도합니다. -
MAXRETRIES: 3-5회 재시도 내에서 해결됩니다. -
DELAYSECS: Replicat에서 적용된 백오프입니다.
영구 오류 처리
영구 오류가 감지되면 트랜잭션을 롤백한 후 Oracle GoldenGate Replicat가 오류와 함께 비정상 종료됩니다. Replicat를 다시 시작하기 전에 Spanner 데이터베이스에서 근본적인 문제를 해결해야 합니다.