다음을 통해 공유


Attunity에서 Oracle에 대한 변경 데이터 캡처를 사용하는 알려진 오류 및 해결 방법

중요합니다

Attunity의 Oracle에 대한 변경 데이터 캡처는 이제 더 이상 사용되지 않습니다. 자세한 내용은 공지를 참조하세요.

이 항목에서는 Oracle CDC Designer 구성 도구에서 CDC(변경 데이터 캡처) 인스턴스를 볼 때 발생하는 주요 문제 및 알려진 해결을 나열합니다. 이 도구는 SQL Server 2012부터 포함된 Attunity의 Oracle에 대한 변경 데이터 캡처의 일부입니다.

버그 수정

문제 해결에 너무 많은 시간을 소비하기 전에 다음과 같은 알려진 문제를 방지하기 위해 최신 Cdc for Oracle by Attunity 빌드를 사용하는 것이 중요합니다.

SQL Server 2017

버전 5.0.0.111 에는 다음 수정 사항이 포함되어 있습니다.

  • 버그 수정 - Oracle 테이블을 추가할 때 Oracle CDC Designer가 "'KEY' 키워드 근처의 잘못된 구문" 오류와 함께 실패합니다.
  • 개선 - RAC에 대한 지원이 향상되었습니다. 여기에는 RAC 노드가 다시 시작될 때 더 나은 처리가 포함됩니다.
  • 버그 수정 - CDC가 v$log에서 NEXT_CHANGE#을 요청하여 Oracle 10.2에서 작동하지 않습니다.

버전 5.0.0.93 에는 다음 수정 사항이 포함되어 있습니다.

  • Oracle 테이블을 추가할 때 Microsoft CDC for Oracle by Attunity Designer가 "'KEY'라는 단어 근처의 잘못된 구문" 오류와 함께 실패합니다.

SQL Server 2016

버전 4.0.107 에는 다음 수정 사항이 포함되어 있습니다.

  • 버그 수정 – Oracle 테이블을 추가할 때 Oracle CDC Designer가 "'KEY' 키워드 근처의 잘못된 구문" 오류와 함께 실패합니다.
  • 개선 - RAC에 대한 지원이 향상되었습니다. 여기에는 RAC 노드를 다시 시작할 때 더 나은 처리가 포함됩니다.
  • 버그 수정 – CDC가 v$log에서 NEXT_CHANGE#을 요청하여 Oracle 10.2에서 작동하지 않습니다.

버전 4.0.0.95 에는 다음 수정 사항이 포함되어 있습니다.

  • 버그 수정 – Oracle 테이블을 추가할 때 Oracle CDC Designer가 "'KEY' 키워드 근처의 잘못된 구문" 오류와 함께 실패합니다.

버전 4.0.0.88 에는 다음 수정 사항이 포함되어 있습니다.

  • Attunity CDC 인스턴스의 고급 옵션에 추가된 속성은 테이블이 CDC에서 추가되거나 제거될 때 제거됩니다.
  • __$command_id 열을 추가하는 SQL 수정을 적용한 후 Attunity CDC의 작동이 중지됩니다.

SQL Server 2014

버전 2.0.0.114 에는 다음 수정 사항이 포함되어 있습니다.

  • 버그 수정 – Oracle 테이블을 추가할 때 Oracle CDC Designer가 "'KEY' 키워드 근처의 잘못된 구문" 오류와 함께 실패합니다.
  • 개선 - RAC에 대한 지원이 향상되었습니다. 여기에는 RAC 노드를 다시 시작할 때 더 나은 처리가 포함됩니다.
  • 버그 수정 – CDC가 v$log에서 NEXT_CHANGE#을 요청하여 Oracle 10.2에서 작동하지 않습니다.

버전 2.0.0.92 에는 다음 수정 사항이 포함되어 있습니다.

  • Attunity CDC 인스턴스의 고급 옵션에 추가된 속성은 테이블이 CDC에서 추가되거나 제거될 때 제거됩니다. __$command_id 열을 추가하는 SQL 수정을 적용한 후 Attunity CDC의 작동이 중지됩니다.
  • Oracle 테이블에 대한 메타데이터 유효성 검사 cdc.table_name 실패했습니다. 열 column_name 인덱스가 범위를 벗어났습니다. 그리고 이 문제: Attunity에서 Oracle용 CDC를 사용할 때 Oracle CDC 서비스가 중단된 상태를 표시합니다.
  • 일부 변경 내용은 누락되었으며 SQL Server 데이터베이스에 복제되지 않습니다. 이 문제는 테이블에 CLOB(큰 이진 개체)가 둘 이상 있고 CLOB 중 하나에 큰 값이 있는 경우에 발생합니다.
    • KB 3029096 설명한 대로 SQL Server 2014 SP1의 누적 업데이트 1 및 SQL Server 2014 RTM용 누적 업데이트 8에서 수정되었습니다.
  • Oracle 테이블에 긴 데이터 형식의 열이 있는 경우 Attunity에서 Oracle에 대한 변경 데이터 캡처의 작동이 중지됩니다.
    • KB KB4017793 설명한 대로 SQL Server 2014 SP1의 누적 업데이트 5 및 SQL 2014 RTM의 누적 업데이트 12에서 수정되었습니다.

SQL Server 2012

버전 1.1.0.102 에는 다음 수정 사항이 포함되어 있습니다.

  • Attunity CDC 인스턴스의 고급 옵션에 추가된 속성은 테이블이 CDC에서 추가되거나 제거될 때 제거됩니다. __$command_id 열을 추가하는 SQL 수정을 적용한 후 Attunity CDC의 작동이 중지됩니다.
  • Oracle 인스턴스에 대한 CDC는 시작할 때 응답을 중지하고 변경 내용을 캡처하지 않습니다. Oracle 서버 메모리는 메모리가 부족하거나 크래시가 발생할 때까지 증가할 수 있습니다.
  • 2672759: Microsoft Change Data Capture Service for Oracle by Attunity: "ORA-00600: 내부 오류 코드"를 사용하는 경우 오류 메시지입니다. 원본 수준 추적을 추가하고 동일한 ORA-00600 오류가 발생하는지 확인합니다. Oracle 패치 다운로드로 수정되었습니다.
  • 여러 파티션
    • Oracle 테이블에서 10개 이상의 파티션을 사용하는 경우 CDC 인스턴스는 테이블에 대한 모든 변경 내용을 캡처할 수 없습니다. Oracle 테이블이 10개 이상의 파티션으로 정의되면 변경 내용은 마지막 10개 파티션에서만 캡처됩니다. SQL Server 2012용 서비스 팩 1 릴리스에서 수정되었습니다. SP1 기능 팩 다운로드 페이지를 참조하세요.
  • 변경 내용이 손실됨
    • 이벤트 캡처는 무한 루프로 이동하고 새 데이터 변경 내용 캡처를 중지할 수 있습니다(Oracle 버그 5623813 관련). Oracle RAC 환경에서 CDC 인스턴스의 중지 또는 다시 시작을 수행하는 경우 변경 내용을 건너뛰거나 손실할 수 있습니다. 즉, SQL Server 변경 데이터 캡처에 중요한 행이 누락되므로 데이터 웨어하우스 또는 구독 시스템에 데이터 손실이 발생합니다. SQL Server 2012용 서비스 팩 1 릴리스에서 수정되었습니다. SP1 기능 팩 다운로드 페이지 참조
  • SQL 열의 두 배 너비
    • Oracle 인스턴스에 대한 CDC를 만들 때 SQL Server에 대해 실행할 스크립트에서 스크립트에서 만든 SQL Server 테이블에서 변수 너비 데이터 형식 열의 길이가 두 배로 증가합니다. 예를 들어 Oracle 테이블의 VARCHAR2(10) 열에서 변경 내용을 추적하려는 경우 SQL Server 테이블의 해당 열은 배포 스크립트의 NVARCHAR(20)입니다. KB 2769673 설명한 대로 SQL Server 2012 SP1의 누적 업데이트 2 또는 SQL Server 2012의 누적 업데이트 5를 수정합니다.
  • DDL 데이터가 잘립니다.
    • 라틴 문자가 아닌 문자가 포함된 Oracle 데이터베이스에 대해 4,000바이트를 초과하는 DDL(데이터 정의 언어) 문을 실행하면 Attunity의 Oracle CDC가 실패합니다. 또한 오류 메시지가 ORA-01406: fetched column value was truncated.표시됩니다. KB 2839806 설명된 대로 SQL Server 2012 SP1에 대한 누적 업데이트 4에서 수정되었습니다.
  • 마지막 두 열에서 변경 내용이 손실됨
  • Oracle용 CDC를 사용할 때 SQL 트랜잭션 로그가 증가합니다.
    • Oracle 인스턴스에 대한 변경 데이터 캡처가 구성되면 변경된 데이터를 수신하는 SQL 데이터베이스에는 복제를 위해 표시된 트랜잭션이 있는 미러된 테이블이 있습니다. 이 동작은 Oracle CDC가 SQL Server용 CDC에 사용되는 것과 유사한 기본 시스템 저장 프로시저를 사용하므로 발생합니다. 그러나 Oracle용 CDC를 단독으로 사용할 때는 SQL CDC 복제가 필요하지 않으므로 복제용으로 표시된 트랜잭션을 지울 로그 판독기는 없습니다. SQL Server에서 트랜잭션을 복제할 필요는 없으므로 이 문서의 뒷부분에 설명된 해결 방법을 사용하여 트랜잭션을 배포된 것으로 수동으로 표시하는 것이 안전합니다. 자세한 내용은 KB 2871474 찾을 수 있습니다.
  • 오류 ORACDC000T: Error encountered at position to change event - SCN not found - EOF simulated. KB 2883524 설명된 대로 SQL Server 2012 SP1에 대한 누적 업데이트 7에서 수정되었습니다.
  • Oracle 테이블에 대한 메타데이터 유효성 검사 cdc.table_name 실패했습니다. 열 column_name 인덱스가 범위를 벗어났습니다. KB 2883524 설명된 대로 SQL Server 2012 SP1에 대한 누적 업데이트 7에서 수정되었습니다.
  • SQL Server 2012에서 Oracle by Attunity에 CDC를 사용하는 경우 Oracle CDC Service에서 중단된 상태를 표시합니다. KB 2923839 설명된 대로 SQL Server 2012 SP1에 대한 누적 업데이트 8에서 수정되었습니다.
  • 일부 변경 내용은 누락되었으며 SQL Server 데이터베이스에 복제되지 않습니다. 이 문제는 테이블에 CLOB(큰 이진 개체)가 둘 이상 있고 CLOB 중 하나에 큰 값이 있는 경우에 발생합니다. KB 2923839 설명된 대로 SQL Server 2012 SP1에 대한 누적 업데이트 8에서 수정되었습니다.
  • Oracle 테이블에 긴 데이터 형식의 열이 있는 경우 Attunity에서 Oracle에 대한 변경 데이터 캡처의 작동이 중지됩니다. KB KB4017793 설명한 대로 SQL Server 2012 SP3의 누적 업데이트 2 및 SQL 2012 SP2의 누적 업데이트 11에서 수정되었습니다.

자세한 로그 수집

이 섹션에서는 CDC 인스턴스에서 오류 및 이벤트를 수집하는 방법을 설명합니다.

관리 콘솔

왼쪽 창에서 CDC 인스턴스가 강조 표시되면 Oracle 변경 데이터 캡처 디자이너 관리 콘솔 내에 제출된 상태 메시지에서 오류를 볼 수 있습니다.

쿼리 추적 테이블

SQL Server 내 CDC 데이터베이스의 추적 테이블을 쿼리하여 기록된 오류를 확인할 수 있습니다.

기본 로깅에서 출력 저장

진단을 캡처하려면 Oracle 변경 데이터 캡처 관리 콘솔의 상태 탭에서 진단 수집 을 선택합니다.

진단 수집 옵션이 호출된 Oracle 변경 데이터 캡처 관리 콘솔의 상태 탭을 보여 주는 스크린샷

시작 시간을 선택하고 로그 파일의 위치를 선택합니다. 그런 다음 만들기 를 선택하여 진단 컬렉션을 시작합니다.

testTA에 대한 진단 수집 대화 상자의 스크린샷.

자세한 오류

인스턴스에서 수집한 추적 수준을 높이고 시나리오를 반복하여 보다 자세한 로깅을 수집할 수 있습니다. 이렇게 하려면 작업에서 속성을 선택한 다음 고급 탭의 고급 설정 표에 새 속성을 추가합니다. 속성의 이름을 다음으로 trace 설정 SOURCE합니다.

작업 아래의 속성 옵션을 보여 주는 스크린샷.

오류를 재현한 다음 진단 수집 옵션을 선택하여 로그를 수집합니다.

진단 수집 옵션이 호출된 Oracle 변경 데이터 캡처 관리 콘솔의 상태 탭의 또 다른 스크린샷.

ORA-00942 테이블이 없습니다.

CDC 인스턴스의 상태 메시지 필드에 표시되는 일반적인 오류입니다. 인스턴스는 여러 번 다시 시도하므로 상태 아이콘이 일시적으로 녹색으로 변경되지만 빨간색 느낌표 및 예기치 않은 상태로 실패합니다.

CDC 인스턴스의 상태 메시지 필드에 표시되는 일반적인 오류를 보여 주는 스크린샷

"ERROR","computername","ERROR","UNEXPECTED",
"ORACDC508E:Oracle method OCIStmtExecute failed with error: ORA-00942: table or view does not exist ","source","",""

"ERROR","computername","RUNNING","IDLE",
"ORACDC518E:Failed to verify archive log mode.","source","",""

"ERROR","computername","ERROR","UNEXPECTED",
"ORACDC517E:Oracle Call Interface (OCI) method failed: ORA-00942: table or view does not exist .","source","",""

"ERROR","computername","ERROR","UNEXPECTED",
"ORACDC414E:The Engine component failed with return code 1.","engine","",""

이는 CDC 인스턴스에서 Oracle 서버로 연결하는 Oracle 계정에 시스템 로그 뷰를 볼 수 있는 권한이 없는 경우에 발생합니다.

해결 방법

이 오류를 해결하려면 Oracle 데이터베이스 시스템 내에서 현재 구성된 사용자에게 적절한 권한을 부여하거나 CDC 인스턴스에서 Oracle 서버에 연결하는 데 사용되는 계정을 변경합니다.

모든 반드시 사용 권한 목록은 설치 프로그램 파일 폴더에 포함된 도움말 파일에 자세히 설명되어 있습니다 C:\Program Files\Change Data Capture for Oracle by Attunity\Attunity.SqlServer.XdbCdcDesigner.chm. 전체 목록은 .chm 파일 내에서 "Oracle 원본 데이터베이스에 연결"이라는 페이지를 참조하세요.

왼쪽 창에서 CDCInstance를 선택하고 CDC Designer 창에서 가장 오른쪽에 있는 작업 창에서 속성 단추를 선택하여 사용자 계정을 설정할 수 있습니다. 속성 대화 상자 페이지에서 Oracle 로그 마이닝 인증 계정을 변경할 수 있습니다.

testTA 속성 대화 상자의 Oracle 탭을 보여 주는 스크린샷

참고하십시오

데이터 변경 내용 추적(SQL Server)
변경 데이터 캡처 개요(SQL Server)
변경 데이터 다루기(SQL Server)
변경 데이터 캡처 관리 및 모니터링(SQL Server)