오류 처리Error Handling

Oracle CDC 인스턴스는 단일 Oracle 원본 데이터베이스에서 변경 사항을 마이닝하고(Oracle RAC 클러스터가 단일 데이터베이스로 간주됨) 대상 SQL ServerSQL Server 의 CDC 데이터베이스에 있는 변경 테이블에 커밋된 변경 내용을 기록합니다.An Oracle CDC Instance mines changes from a single Oracle source database (an Oracle RAC cluster is considered a single database) and writes the committed changes to change tables in a CDC database in the target SQL ServerSQL Server instance.

cdc.xdbcdc_state시스템 테이블에서 CDC 인스턴스의 상태가 유지됩니다.A CDC Instance maintains its state in a system table called cdc.xdbcdc_state. 언제든지 이 테이블을 쿼리하여 CDC 인스턴스의 상태를 확인할 수 있습니다.This table can be queried any time to find the state of the CDC Instance. cdc.xdbcdc_state 테이블에 대한 자세한 내용은 cdc.xdbcdc_state를 참조하세요.For more information about the cdc.xdbcdc_state table, see cdc.xdbcdc_state.

다음 표에서는 xdbcdc_state 테이블의 CDC 인스턴스 상태에 대해 설명합니다.The table below describes the CDC Instance states in the xdbcdc_state table.

각 상태에 대해 cdc.xdbcdc_state 테이블의 해당 열에 다음과 같이 두 가지 표시가 제공됩니다.For each state, the following two indications are shown for the corresponding columns in the cdc.xdbcdc_state table:

  • 인스턴스가 활성화되지 않았습니다(현재 Windows 프로세스에서 인스턴스를 처리 중이 아님).Instance is not active (there is no Windows process currently handling it). active 열의 값이 1이면 이 특정 Oracle CDC 인스턴스를 처리 중인 Oracle CDC Service의 하위 프로세스가 실행 중인 것입니다.If the active column value is 1, a subprocess of the Oracle CDC Service handling this specific Oracle CDC Instance is running.

  • error 열의 값이 0이면 Oracle CDC 인스턴스가 오류 상태에 있지 않은 것입니다.If the error column value is 0, the Oracle CDC Instance is not in an error condition. error 열의 값이 1이면 Oracle CDC 인스턴스가 변경 내용을 처리하지 못하게 하는 오류가 발생한 것입니다.If the error column value is 1, there is an error that prevents the Oracle CDC Instance from processing changes.

    error 열과 active 열의 값이 모두 1이면 Oracle CDC 인스턴스에 대해 자동으로 해결될 수 있는 복구할 수 있는 오류가 발생한 것입니다.If the error column has a value of 1 and the active column value is also 1, then a recoverable error is occurring for the Oracle CDC Instance, which can be resolved automatically. error 열의 값은 1이고 active 열의 값은 0이면 대부분의 경우 문제를 수동으로 해결한 다음 처리를 다시 시작할 수 있습니다.If the error column has a value of 1 and the active column has a value of 0, then in most cases a manual workaround may be needed to resolve the problem before processing can be resumed.

    다음 표에서는 Oracle CDC 인스턴스가 상태 테이블에 보고할 수 있는 다양한 상태 코드에 대해 설명합니다.The following table describes the various status codes that the Oracle CDC Instance may report in its state table.

상태Status 활성 상태 코드Active Status Code 오류 상태 코드Error Status Code DescriptionDescription 하위 상태Substatus
ABORTEDABORTED 00 11 Oracle CDC 인스턴스가 실행되고 있지 않습니다.The Oracle CDC Instance is not running. ABORTED 하위 상태는 Oracle CDC 인스턴스가 ACTIVE 상태에서 예기치 않게 중지되었음을 나타냅니다.The ABORTED substatus indicates that the Oracle CDC Instance was ACTIVE and then has stopped unexpectedly. ABORTED 하위 상태는 Oracle CDC 인스턴스가 ACTIVE 상태에서 실행되고 있지 않을 때 Oracle CDC Service 기본 인스턴스에 의해 설정됩니다.The ABORTED substatus is established by the Oracle CDC Service main instance when it detects that the Oracle CDC Instance is not running while its status is ACTIVE.
errorERROR 00 11 Oracle CDC 인스턴스가 실행되고 있지 않습니다.The Oracle CDC Instance is not running. ERROR 상태는 CDC 인스턴스가 ACTIVE 상태이지만 복구할 수 없는 오류가 발생하여 사용하지 않도록 설정되었음을 나타냅니다.The ERROR status indicates that the CDC instance was ACTIVE but then encountered an error that is not recoverable and disabled itself. MISCONFIGURED: 복구할 수 없는 구성 오류가 감지되었습니다.MISCONFIGURED: An unrecoverable configuration error was detected.

PASSWORD-REQUIRED: Attunity Oracle CDC Designer에 대해 설정된 암호가 없거나 구성된 암호가 잘못되었습니다.PASSWORD-REQUIRED: There is no password set for the Change Data Capture Designer for Oracle by Attunity or the configured password is not valid. 서비스 비대칭 키 암호 변경이 원인일 수 있습니다.This can be because of a change to the service asymmetric key password.
RUNNINGRUNNING 11 00 CDC 인스턴스가 실행 중이며 변경 레코드를 처리하고 있습니다.The CDC instance is running and is processing change records. IDLE: 모든 변경 레코드가 처리되어 대상 제어 테이블(_CT)에 저장되었습니다.IDLE: All change records were processed and stored into the target control (_CT) tables. 제어 테이블이 있는 활성 트랜잭션이 없습니다.There is no active transaction with the control tables.

PROCESSING: 제어 테이블(_CT)에 아직 기록되지 않은 처리 중인 변경 레코드가 있습니다.PROCESSING: There are change records being processed that are not yet written to the control (_CT) tables.
STOPPEDSTOPPED 00 00 CDC 인스턴스가 실행되고 있지 않습니다.The CDC instance is not running. STOP 하위 상태는 CDC 인스턴스가 ACTIVE 상태에서 올바르게 중지되었음을 나타냅니다.The STOP substatus indicates that the CDC instance was ACTIVE and then was stopped correctly.
SUSPENDEDSUSPENDED 11 11 CDC 인스턴스가 실행되고 있지만 복구할 수 있는 오류로 인해 처리가 일시 중지되었습니다.The CDC instance is running but processing is suspended due to a recoverable error. DISCONNECTED: 원본 Oracle 데이터베이스에 연결할 수 없습니다.DISCONNECTED: The connection with the source Oracle database cannot be established. 연결이 복원되면 처리가 다시 시작됩니다.Processing will resume once connection is restored.

STORAGE: 저장소가 꽉 찼습니다.STORAGE: The storage is full. 저장소를 사용할 수 있게 되면 처리가 다시 시작됩니다.Processing will resume when storage becomes available. 경우에 따라 상태 테이블을 업데이트할 수 없기 때문에 이 상태가 나타나지 않을 수 있습니다.In some cases, this status may not appear because the status table cannot be updated.

LOGGER: 로거가 Oracle에 연결되어 있지만 일시적인 문제로 인해 Oracle 트랜잭션 로그를 읽을 수 없습니다.LOGGER: The logger is connected to Oracle but it cannot read the Oracle transaction logs because of a temporary problem.
DATAERRORDATAERROR xx xx 이 상태 코드는 xdbcdc_trace 테이블에 대해서만 사용됩니다.This status code is only used for the xdbcdc_trace table. xdbcdc_state 테이블에는 이 상태가 나타나지 않습니다.It does not appear in the xdbcdc_state table. 추적 레코드에 이 상태가 있으면 Oracle 로그 레코드에 문제가 있는 것입니다.Trace records with this status indicate a problem with an Oracle log record. 잘못된 로그 레코드가 data 열에 BLOB으로 저장됩니다.The bad log record is stored in the data column as a BLOB. BADRECORD: 연결된 로그 레코드를 구문 분석할 수 없습니다.BADRECORD: The attached log record could not be parsed.

CONVERT-ERROR: 일부 열의 데이터를 캡처 테이블의 대상 열로 변환할 수 없습니다.CONVERT-ERROR: The data in some columns could not be converted to the target columns in the capture table. 이 상태는 변환 오류가 발생하면 추적 레코드를 생성하도록 구성에 지정된 경우에만 나타날 수 있습니다.This status may appear only if the configuration specifies that conversion errors should produce trace records.

Oracle CDC Service 상태는 SQL ServerSQL Server에 저장되므로 데이터베이스의 상태 값에 서비스의 실제 상태가 반영되지 않는 경우도 있습니다.Because the Oracle CDC Service state is stored in SQL ServerSQL Server, there may be cases where the state value in the database might not reflect the actual state of the service. 가장 일반적인 시나리오로는 서비스의 SQL ServerSQL Server 연결이 끊어져서 서비스를 다시 시작할 수 없는 경우가 있습니다.The most common scenario is when the service loses its connection to SQL ServerSQL Server and cannot resume it (for any reason). 이 경우 cdc.xdbcdc_state 에 이전 상태가 저장되어 있습니다.In that case, the state stored in cdc.xdbcdc_state becomes stale. 마지막 업데이트 타임스탬프(UTC)가 1분을 초과하는 경우 상태가 오래되었을 수 있습니다.If the last update timestamp (UTC) is more than a minute old, the state is probably stale. 이 경우 Windows 이벤트 뷰어를 사용하여 서비스 상태에 대한 추가 정보를 확인하십시오.In this case, use the Windows Event Viewer to find additional information about the status of the service.

오류 처리Error Handling

이 섹션에서는 Oracle CDC Service에서 오류를 처리하는 방법에 대해 설명합니다.This section describes how the Oracle CDC Service handles errors.

로깅Logging

Oracle CDC Service는 다음 위치 중 하나에서 오류 정보를 만듭니다.The Oracle CDC Service creates error information in one of the following places.

  • Windows 이벤트 로그: 오류를 기록하는 데 사용되며 Oracle CDC Service 수명 주기 이벤트(대상 SQL ServerSQL Server 인스턴스 시작, 중지, 연결 및 다시 연결)를 나타냅니다.The Windows event log, which is used with logging errors and to indicate Oracle CDC Service life cycle events (starting, stopping, (re)connection to the target SQL ServerSQL Server instance).

  • MSXDBCDC.dbo.xdbcdc_trace 테이블: Oracle CDC Service 주 프로세스의 일반 로깅 및 추적에 사용됩니다.The MSXDBCDC.dbo.xdbcdc_trace table, which is used for general logging and tracing by the Oracle CDC Service main process.

  • <cdc 데이터베이스 >. e 테이블: Oracle CDC 인스턴스의 일반 로깅 및 추적에 사용 되는 합니다.The <cdc-database>.cdc.xdbcdc_trace table, which is used for general logging and tracing by Oracle CDC Instances. 특정 Oracle CDC 인스턴스 관련 오류가 해당 인스턴스의 추적 테이블에 기록된다는 것을 의미합니다.This means that errors related to a specific Oracle CDC Instance are logged to that instance’s trace table.

    다음과 같은 경우에 Oracle CDC Service에 의해 정보가 기록됩니다.Information is logged by the Oracle CDC service when the service:

  • 서비스 제어 관리자가 서비스를 시작하거나 중지한 경우Is started or stopped by the service control manager.

  • 연결된 SQL ServerSQL Server 인스턴스에 연결할 수 없으며 오류가 발생한 이후에 성공적으로 연결된 경우Cannot connect to the associated SQL ServerSQL Server instance and when it successfully establishes a connection following a failure.

  • Oracle CDC Service 인스턴스를 시작하는 중에 오류가 발생한 경우Encounters an error starting Oracle CDC Service instances.

  • Oracle CDC 인스턴스가 중단된 경우Detects that an Oracle CDC Instance has aborted.

  • 오류가 발생한 경우Encounters an unexpected error.

    다음과 같은 경우에 CDC 인스턴스에 의해 정보가 기록됩니다.Information is logged by the CDC instance when the instance:

  • 인스턴스를 사용 또는 사용 안 함으로 설정할 때Is enabled or disabled.

  • 오류가 발생한 경우Encounters an error.

  • 복구할 수 있는 오류에서 복구된 경우Recovers from a recoverable error.

    추적 테이블은 문제 해결을 위해 자세한 추적 정보를 기록하는 데에도 사용됩니다.The trace table is also used for recording detailed trace information for troubleshooting.

원본 Oracle 연결 오류 처리Handling Source Oracle Connection Errors

Oracle CDC Service는 원본 Oracle 데이터베이스와 지속적으로 연결되어야 합니다.The Oracle CDC Service needs a persistent connection with the source Oracle database. 서비스 구성과 관련 없는 대부분의 연결 오류(예: 네트워킹 오류)는 일시적인 것으로 간주됩니다.Many connection errors that are unrelated to the service configuration (such as networking errors) are considered transient. 따라서 Oracle CDC Service에서 연결 해제 후에 작업을 시작하거나 작업 중에 Oracle 데이터베이스에 연결할 수 없는 경우 서비스의 상태가 SUSPENDED/DISCONNECTED로 변경되고 연결이 정기적으로 다시 시도되는 다시 시도 루프가 시작됩니다.Therefore, if the Oracle CDC Service cannot establish connection with the Oracle database (either on start or during work following a disconnection), the service changes its state to SUSPENDED/DISCONNECTED and enters a retry loop where the connection is retried at regular intervals. 다시 연결되면 처리가 계속됩니다.When the connection is re-established, processing continues.

다른 유형의 연결 오류(예: 잘못된 자격 증명, 권한 부족, 잘못된 데이터베이스 주소 등)는 일시적인 오류가 아닙니다.Other types of connection errors are not transient (for example, bad credentials, insufficient privileges, and bad database address). 이러한 오류가 발생하면 Oracle CDC Service 상태가 ERROR/MISCONFIGURED 또는 ERROR/PASSWORD-REQUIRED로 설정되고 서비스를 사용할 수 없습니다.When these errors occur, the Oracle CDC Service state is set to ERROR/MISCONFIGURED or to ERROR/PASSWORD-REQUIRED and the service is disabled. 사용자가 기본 오류를 수정할 때 처리를 다시 시작하도록 Oracle CDC 인스턴스를 수동으로 다시 설정해야 합니다.When the user fixes the underlying error, the Oracle CDC Instance should be manually re-enabled for processing to resume.

일시적인 오류인지 확실하지 않은 경우 일시적인 오류라고 가정하는 것이 좋습니다.When it is not clear whether the error is transient, it is best to assume it is transient.

대상 SQL Server 연결 오류 처리Handling Target SQL Server Connection Errors

Oracle CDC Service는 대상 SQL ServerSQL Server 인스턴스에 지속적으로 연결해야 합니다.The Oracle CDC Service needs a persistent connection to the target SQL ServerSQL Server instance. 이 연결은 다음과 같은 용도로 사용됩니다.This connection is used to:

  • 현재 SQL ServerSQL Server 인스턴스를 사용 중인 동일한 이름을 가진 다른 서비스가 없는지 확인합니다.Ensure that there are no other services by the same name currently working with this SQL ServerSQL Server instance.

  • 사용 또는 사용 안 함으로 설정된 Oracle CDC 인스턴스를 확인하고 하위 프로세스를 시작 또는 중지합니다.Check which Oracle CDC Instance is enabled or disabled and start (or stop) its subprocess.

    서비스가 대상 SQL ServerSQL Server 인스턴스에 연결되어 있고 이 이름으로 사용 중인 유일한 Oracle CDC Service일 때 사용하도록 설정된 Oracle CDC 인스턴스를 확인하고 처리 중인 프로세스(서비스에서 비활성화된 프로세스를 중단한 경우)를 시작할 수 있습니다.When the service establishes a connection with the target SQL ServerSQL Server instance and verifies that it is the only Oracle CDC service by this name that is working, it can check which Oracle CDC instances are enabled and start their handling processes (afterward the service stops these processes when they are disabled). Oracle CDC 인스턴스는 SQL ServerSQL Server 연결을 사용하여 Oracle CDC 인스턴스의 CDC 데이터베이스 작업을 수행합니다.The Oracle CDC instances use their SQL ServerSQL Server connections to work with the CDC database of the Oracle CDC instance.

    대상 SQL ServerSQL Server 에 대한 연결이 실패한 경우에 오류를 처리하는 방법은 오류가 일시적인 오류인지 여부에 따라 달라집니다.How errors are handled when the connection to the target SQL ServerSQL Server fails depends on whether the errors are transient.

    일시적이지 않은 알려진 오류(예: 잘못된 자격 증명, 권한 부족, 잘못된 연결 정보)인 경우 서비스는 Windows 이벤트 로그에 오류를 기록하고 중지됩니다. SQL ServerSQL Server에 연결할 수 없기 때문에 추적 테이블에 오류를 기록할 수 없습니다.For known non-transient errors (such as bad credentials, insufficient privileges, bad connection information), the service logs an error to the Windows event log and stops (it cannot write to the trace table because it cannot connect to SQL ServerSQL Server). 이 경우 사용자가 오류를 해결하고 Oracle CDC Windows 서비스를 다시 시작해야 합니다.In this case, the user must resolve the error and restart the Oracle CDC Windows service.

    일시적인 오류 및 예기치 못한 오류의 경우 작업이 여러 번 다시 시도되고 오류가 오래 동안 지속될 경우 CDC Service에서 CDC 인스턴스 하위 프로세스를 중지하고 초기 연결 시도로 돌아갑니다. 이 때 다른 시스템의 Oracle CDC Service에서 명명된 CDC Service를 이미 제어하고 있을 수 있습니다.For transient errors and unexpected errors, the operation is retried several times and if the failure persists for a significant time period, the CDC Service stops its CDC Instance subprocesses and goes back to its initial connection attempt (by this time, an Oracle CDC Service on another machine may have already taken control of the named CDC service).

대상 SQL Server 저장소 꽉 참 오류 처리Handling Target SQL Server Storage Full Errors

Oracle CDC Service는 대상 SQL ServerSQL Server CDC 데이터베이스에 새 변경 데이터를 삽입할 수 없을 경우 이벤트 로그에 경고를 기록하고 추적 레코드 삽입을 다시 시도합니다. 그렇지만 이 시도도 동일한 이유로 실패할 수 있습니다.When the Oracle CDC Service detects that it cannot insert new change data into the target SQL ServerSQL Server CDC database, it writes a warning to the event log and tries to insert a trace record (although that may fail for the same reason). 그런 다음 작업이 성공할 때까지 특정 간격으로 작업을 다시 시도합니다.It then retries the operation in a specific interval until it is successful.

Oracle CDC 오류 처리Handling Oracle CDC Errors

Oracle CDC 인스턴스는 Oracle 트랜잭션 로그를 읽은 다음 처리합니다.The Oracle CDC Instance reads the Oracle transaction log and processes it. CDC 처리 중에 오류가 발생하면 cdc.xdbcdc_state 테이블에 오류가 보고되며 사용자가 보고된 오류를 기반으로 수동으로 작업해야 합니다.If the CDC processing encounters an error, it is reported in the cdc.xdbcdc_state table and the user needs to manually intervene based on the reported error.

예를 들어 Oracle CDC 인스턴스를 오래 동안 활성화할 수 없고 필요한 Oracle 트랜잭션 로그 파일을 더 이상 사용할 수 없는 경우가 있습니다.For example, the Oracle CDC Instance may not be active for an extended duration and the required Oracle transaction log files are no longer available. 이 경우 Oracle DBA는 Oracle CDC 인스턴스에서 처리를 다시 시작하는 데 필요한 로그를 복원해야 합니다.In this case, the Oracle DBA must restore the required logs for the Oracle CDC Instance to resume processing.

예기치 않은 Oracle CDC 인스턴스 오류 처리Handling Unexpected Oracle CDC Instance Failures

Oracle CDC Service는 CDC 인스턴스 하위 프로세스를 모니터링합니다.The Oracle CDC Service monitors its CDC Instance subprocesses. CDC 인스턴스 하위 프로세스가 중단되면 CDC Service는 MSXDBCDC.dbo.xdbcdc_databases 테이블에서 해당 프로세스를 비활성화하고 cdc.xdbcdc_state 상태를 ABORTED로 업데이트합니다.When a CDC Instance subprocess aborts, the CDC Service disables it in the MSXDBCDC.dbo.xdbcdc_databases table and updates its cdc.xdbcdc_state status to ABORTED. 이 경우 표준 Windows 오류 보고 대화 상자는 추가 분석을 위해 이 오류를 보고하는 데 사용됩니다.In this case, the standard Windows Error Reporting dialog box is used to report this error for further analysis.

관련 항목:See Also

변경 데이터 캡처 Designer for Oracle by Attunity Change Data Capture Designer for Oracle by Attunity
Oracle CDC 인스턴스The Oracle CDC Instance