오류 처리

Important

Change Data Capture for Oracle by Attunity는 이제 더 이상 사용되지 않습니다. 자세한 내용은 공지를 참조하세요.

Oracle CDC 인스턴스는 단일 Oracle 원본 데이터베이스(Oracle RAC 클러스터는 단일 데이터베이스로 간주됨)의 변경 내용을 마이닝하고, 커밋된 변경 내용을 대상 SQL Server 인스턴스의 CDC 데이터베이스에 있는 변경 테이블에 기록합니다.

CDC 인스턴스는 cdc.xdbcdc_state라는 시스템 테이블에서 상태를 유지 관리합니다. 이 테이블은 언제든지 쿼리하여 CDC 인스턴스의 상태를 확인할 수 있습니다. cdc.xdbcdc_state 테이블에 대한 자세한 내용은 cdc.xdbcdc_state 참조하세요.

아래 표에서는 xdbcdc_state 테이블의 CDC 인스턴스 상태를 설명합니다.

각 상태에 대해 cdc.xdbcdc_state 테이블의 해당 열에 다음과 같이 두 가지 표시가 제공됩니다.

  • 인스턴스가 활성 상태가 아닙니다(현재 처리 중인 Windows 프로세스가 없음). active 열 값이 1이면 이 특정 Oracle CDC 인스턴스를 처리하는 Oracle CDC Service의 하위 프로세서가 실행 중입니다.

  • error 열 값이 0이면 Oracle CDC 인스턴스가 오류 상태가 아닙니다. error 열 값이 1이면 Oracle CDC 인스턴스가 변경 내용을 처리하지 못하게 하는 오류가 있습니다.

    error 열 값이 1이고 active 열 값도 1이면 Oracle CDC 인스턴스에 대해 복구 가능한 오류가 발생합니다. 이 오류는 자동으로 해결될 수 있습니다. error 열 값이 1이고 active 열 값이 0이면 대부분의 경우 처리를 다시 시작하기 전에 문제를 해결하기 위해 수동 해결 방법이 필요할 수 있습니다.

다음 표에서는 Oracle CDC 인스턴스에서 해당 상태 테이블에 보고할 수 있는 다양한 상태 코드를 설명합니다.

상태 활성 상태 코드 오류 상태 코드 설명 Substatus
ABORTED 0 1 Oracle CDC 인스턴스가 실행되고 있지 않습니다. ABORTED 하위 상태는 Oracle CDC 인스턴스가 ACTIVE 상태에서 예기치 않게 중지되었음을 나타냅니다. ACTIVE 상태인 동안 Oracle CDC 인스턴스가 실행되고 있지 않음이 검색되면 Oracle CDC 서비스 기본 인스턴스에서 ABORTED 하위 상태를 설정합니다.
오류 0 1 Oracle CDC 인스턴스가 실행되고 있지 않습니다. ERROR 상태는 CDC 인스턴스가 ACTIVE 상태이지만 복구할 수 없는 오류가 발생하여 사용하지 않도록 설정되었음을 나타냅니다. MISCONFIGURED: 복구할 수 없는 구성 오류가 검색되었습니다.

PASSWORD-REQUIRED: Change Data Capture Designer for Oracle by Attunity에 대해 설정된 암호가 없거나 구성된 암호가 잘못되었습니다. 이는 서비스 비대칭 키 암호가 변경되었기 때문일 수 있습니다.
RUNNING 1 0 CDC 인스턴스가 실행 중이며 변경 레코드를 처리하고 있습니다. IDLE: 모든 변경 레코드가 처리되어 대상 제어(_CT) 테이블에 저장되었습니다. 제어 테이블이 있는 활성 트랜잭션이 없습니다.

PROCESSING: 제어(_CT) 테이블에 아직 기록되지 않은 처리 중인 변경 레코드가 있습니다.
STOPPED 0 0 CDC 인스턴스가 실행되고 있지 않습니다. STOP 하위 상태는 CDC 인스턴스가 ACTIVE 상태였고 올바르게 중지되었음을 나타냅니다.
SUSPENDED 1 1 CDC 인스턴스가 실행 중이지만 복구 가능한 오류로 인해 처리가 일시 중단됩니다. DISCONNECTED: 원본 Oracle 데이터베이스에 연결할 수 없습니다. 연결이 복원되면 처리가 다시 시작됩니다.

STORAGE: 스토리지가 가득 찼습니다. 스토리지를 사용할 수 있게 되면 처리가 다시 시작됩니다. 경우에 따라 상태 테이블을 업데이트할 수 없으므로 이 상태가 표시되지 않을 수 있습니다.

LOGGER: 로거가 Oracle에 연결되어 있지만 일시적인 문제로 인해 Oracle 트랜잭션 로그를 읽을 수 없습니다.
DATAERROR x x 이 상태 코드는 xdbcdc_trace 테이블에만 사용됩니다. xdbcdc_state 테이블에는 표시되지 않습니다. 이 상태의 추적 레코드는 Oracle 로그 레코드에 문제가 있음을 나타냅니다. 잘못된 로그 레코드는 BLOB으로 data 열에 저장됩니다. BADRECORD: 연결된 로그 레코드를 구문 분석할 수 없습니다.

CONVERT-ERROR: 일부 열의 데이터를 캡처 테이블의 대상 열로 변환할 수 없습니다. 이 상태 구성에서 변환 오류가 추적 레코드를 생성해야 한다고 지정하는 경우에만 나타날 수 있습니다.

Oracle CDC Service 상태는 SQL Server에 저장되므로 데이터베이스의 상태 값이 서비스의 실제 상태를 반영하지 않는 경우가 있을 수 있습니다. 가장 일반적인 시나리오는 서비스에서 SQL Server에 대한 연결이 끊기고 어떤 이유로든 다시 시작할 수 없는 경우입니다. 이 경우 cdc.xdbcdc_state에 저장된 상태가 부실해집니다. 마지막 업데이트 타임스탬프(UTC)가 1분을 초과하는 경우 상태가 오래되었을 수 있습니다. 이 경우 Windows 이벤트 뷰어를 사용하여 서비스 상태에 대한 추가 정보를 확인하십시오.

오류 처리

이 섹션에서는 Oracle CDC Service에서 오류를 처리하는 방법을 설명합니다.

로깅

Oracle CDC Service는 오류 정보를 다음 위치 중 하나에 만듭니다.

  • 로깅 오류와 함께 사용되고 Oracle CDC Service 수명 주기 이벤트(대상 SQL Server 인스턴스에 대한 시작, 중지, (재)연결)를 나타내는 데 사용되는 Windows 이벤트 로그입니다.

  • Oracle CDC Service 기본 프로세스에서 일반 로깅 및 추적에 사용되는 MSXDBCDC.dbo.xdbcdc_trace 테이블입니다.

  • <cdc-database>.cdc.xdbcdc_trace 테이블: Oracle CDC 인스턴스의 일반 로깅 및 추적에 사용됩니다. 특정 Oracle CDC 인스턴스 관련 오류가 해당 인스턴스의 추적 테이블에 기록된다는 것을 의미합니다.

서비스가 다음과 같은 경우 Oracle CDC 서비스에서 정보를 기록합니다.

  • 서비스 제어 관리자가 서비스를 시작하거나 중지한 경우

  • 연결된 SQL Server 인스턴스에 연결할 수 없으며 실패 후 연결이 성공적으로 설정되는 경우

  • Oracle CDC Service 인스턴스를 시작하는 중에 오류가 발생한 경우

  • Oracle CDC 인스턴스가 중단되었음을 검색하는 경우

  • 예기치 않은 오류가 발생하는 경우

다음과 같은 경우에 CDC 인스턴스에 의해 정보가 기록됩니다.

  • 인스턴스를 사용 또는 사용 안 함으로 설정할 때

  • 오류가 발생하는 경우

  • 복구 가능한 오류에서 복구하는 경우

추적 테이블은 문제 해결을 위해 자세한 추적 정보를 기록하는 데도 사용됩니다.

원본 Oracle 연결 오류 처리

Oracle CDC Service는 원본 Oracle 데이터베이스와 지속적으로 연결되어야 합니다. 서비스 구성과 관련이 없는 많은 연결 오류(예: 네트워킹 오류)는 일시적인 것으로 간주됩니다. 따라서 Oracle CDC Service에서 Oracle 데이터베이스와의 연결을 설정할 수 없는 경우(연결이 끊긴 후 시작 시 또는 작업 중) 서비스에서 상태를 SUSPENDED/DISCONNECTED로 변경하고 연결이 정기적으로 다시 시도되는 재시도 루프에 들어갑니다. 연결이 다시 설정되면 처리가 계속됩니다.

다른 유형의 연결 오류는 일시적이지 않습니다(예: 잘못된 자격 증명, 권한 부족 및 잘못된 데이터베이스 주소). 이러한 오류가 발생하면 Oracle CDC Service 상태가 ERROR/MISCONFIGURED 또는 ERROR/PASSWORD-REQUIRED로 설정되고 서비스가 사용하지 않도록 설정됩니다. 사용자가 기본 오류를 수정할 때 처리를 다시 시작하도록 Oracle CDC 인스턴스를 수동으로 다시 설정해야 합니다.

오류가 일시적인지 여부가 확실하지 않은 경우 일시적이라고 가정하는 것이 가장 좋습니다.

대상 SQL Server 연결 오류 처리

Oracle CDC Service에는 대상 SQL Server 인스턴스에 대한 영구 연결이 필요합니다. 이 연결은 다음과 같은 용도로 사용됩니다.

  • 현재 이 SQL Server 인스턴스에서 작동하는 동일한 이름의 다른 서비스가 없는지 확인합니다.

  • 사용하거나 사용하지 않도록 설정된 Oracle CDC 인스턴스를 확인하고 해당 하위 프로세스를 시작(또는 중지)합니다.

서비스에서 대상 SQL Server 인스턴스와의 연결을 설정하고 이 이름으로 작동하는 유일한 Oracle CDC 서비스인지 확인하면 사용하도록 설정된 Oracle CDC 인스턴스를 확인하고 처리 프로세스를 시작할 수 있습니다(나중에 사용하지 않도록 설정되면 서비스에서 이러한 프로세스를 중지함). Oracle CDC 인스턴스는 SQL Server 연결을 사용하여 Oracle CDC 인스턴스의 CDC 데이터베이스에서 작동합니다.

대상 SQL Server에 대한 연결이 실패하는 경우 오류를 처리하는 방법은 오류가 일시적인지 여부에 따라 달라집니다.

알려진 일시적이지 않은 오류(예: 잘못된 자격 증명, 권한 부족, 잘못된 연결 정보)의 경우 서비스에서 오류를 Windows 이벤트 로그에 기록하고 중지합니다(SQL Server에 연결할 수 없으므로 추적 테이블에 쓸 수 없음). 이 경우 사용자는 오류를 해결하고 Oracle CDC Windows 서비스를 다시 시작해야 합니다.

일시적인 오류 및 예기치 않은 오류의 경우 작업이 여러 번 다시 시도되고, 오류가 상당한 기간 동안 지속되면 CDC Service에서 CDC 인스턴스 하위 프로세스를 중지하고 초기 연결 시도로 돌아갑니다(이때까지 다른 컴퓨터의 Oracle CDC Service에서 이미 명명된 CDC 서비스를 제어했을 수 있음).

대상 SQL Server 스토리지 가득 참 오류 처리

Oracle CDC Service에서 새 변경 데이터를 대상 SQL Server CDC 데이터베이스에 삽입할 수 없음이 검색되면 경고를 이벤트 로그에 쓰고 추적 레코드를 삽입하려고 시도합니다(같은 이유로 실패할 수도 있음). 그런 다음, 성공할 때까지 작업을 특정 간격으로 다시 시도합니다.

Oracle CDC 오류 처리

Oracle CDC 인스턴스는 Oracle 트랜잭션 로그를 읽고 처리합니다. CDC 처리 중에 오류가 발생하면 cdc.xdbcdc_state 테이블에 오류가 보고되며 사용자가 보고된 오류를 기반으로 수동으로 작업해야 합니다.

예를 들어 Oracle CDC 인스턴스가 장기간 활성화되지 않을 수 있으며 필요한 Oracle 트랜잭션 로그 파일을 더 이상 사용할 수 없습니다. 이 경우 Oracle DBA는 Oracle CDC 인스턴스에 필요한 로그를 복원하여 처리를 다시 시작해야 합니다.

예기치 않은 Oracle CDC 인스턴스 오류 처리

Oracle CDC Service는 해당 CDC 인스턴스 하위 프로세스를 모니터링합니다. CDC 인스턴스 하위 프로세스가 중단되면 CDC Service는 MSXDBCDC.dbo.xdbcdc_databases 테이블에서 이를 사용하지 않도록 설정하고 해당 cdc.xdbcdc_state 상태 ABORTED로 업데이트합니다. 이 경우 표준 Windows 오류 보고 대화 상자는 추가 분석을 위해 이 오류를 보고하는 데 사용됩니다.

참고 항목

Attunity Oracle CDC Designer
Oracle CDC 인스턴스