Oracle CDC Service

Important

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

Oracle CDC Service는 xdbcdcsvc.exe 프로그램을 실행하는 Windows 서비스입니다. Oracle CDC Service는 동일한 컴퓨터에서 각각 다른 Windows 서비스 이름의 여러 Windows 서비스를 실행하도록 구성할 수 있습니다. 단일 컴퓨터에서 여러 Oracle CDC Windows 서비스를 만드는 작업은 서비스 간에 더 효율적으로 분리하기 위해 수행되거나 각 서비스가 서로 다른 SQL Server 인스턴스에서 작동해야 할 때 수행되는 경우가 많습니다.

Oracle CDC Service는 Oracle CDC Service 구성 콘솔을 사용하여 만들어지거나 xdbcdcsvc.exe 프로그램에 기본 제공되는 명령줄 인터페이스를 통해 정의됩니다. 두 경우 모두에서 만든 각 Oracle CDC Service는 단일 SQL Server 인스턴스(Always On 설치를 통해 클러스터하거나 미러할 수 있음)와 연결되며 연결 정보(연결 문자열 및 액세스 자격 증명)는 서비스 구성의 일부입니다.

Oracle CDC Service가 시작되면 연결된 SQL Server 인스턴스에 연결을 시도하고, 처리해야 하는 Oracle CDC 인스턴스 목록을 가져오고, 초기 환경 유효성 검사를 수행합니다. 서비스 시작 중 오류 및 시작/중지 정보는 항상 Windows 애플리케이션 이벤트 로그에 기록됩니다. SQL Server에 대한 연결이 설정되면 모든 오류 및 정보 메시지가 SQL Server 인스턴스의 MSXDBCDC 데이터베이스에 있는 dbo.xdbcdc_trace 테이블에 기록됩니다. 시작 시 확인하는 것 중 하나는 동일한 이름의 다른 Oracle CDC Service가 현재 작동하고 있지 않은지 확인하는 것입니다. 이름이 동일한 서비스가 현재 다른 컴퓨터에서 연결된 경우 Oracle CDC Service는 대기 루프에 들어가서 Oracle CDC 작업 처리를 계속 진하기 전에 다른 서비스의 연결이 끊길 때까지 기다립니다.

Oracle CDC Service가 모든 시작 확인을 통과하면 MSXDBCDC 데이터베이스의 dbo.xdbcdc_databases 테이블에서 사용되는 Oracle CDC 인스턴스가 있는지 확인합니다. 사용하도록 설정된 모든 Oracle CDC 인스턴스에 대해 서비스는 해당 Oracle CDC 인스턴스를 처리하는 하위 프로세스를 시작합니다.

Oracle CDC 인스턴스가 시작되면 CDC 인스턴스와 동일한 이름을 사용하여 SQL Server CDC 데이터베이스에 액세스하고 이전 실행에서 해당 상태를 검색합니다. 모두 제대로 실행 중인지도 확인합니다. 그런 다음, 변경 내용 처리를 다시 시작합니다. Oracle 트랜잭션 로그를 읽고 변경 내용을 CDC 데이터베이스에 씁니다.

Oracle CDC Service는 MSXDBCDC 데이터베이스의 dbo.xdbcdc_tables 테이블을 정기적으로 모니터링하여 Oracle CDC 인스턴스 구성에 구성 변경이 있는지 확인합니다. 변경 내용이 검색되면 Oracle CDC Service는 해당 구성에 대한 변경 내용을 확인해야 한다고 Oracle CDC 인스턴스에 알립니다. Oracle CDC 인스턴스가 사용하도록 설정되는 동안 캡처 인스턴스 추가 및 제거와 같은 대부분의 구성 변경 내용을 적용할 수 있지만, 다른 구성 변경 내용은 Oracle CDC 인스턴스를 다시 시작해야 합니다.

Oracle CDC Designer 콘솔을 사용하면 변경 내용이 자동으로 검색됩니다. SQL을 사용하여 Oracle CDC 구성을 직접 업데이트하는 경우 Oracle CDC Service에서 구성 변경 내용을 확인하려면 다음 프로시저를 수행해야 합니다.

DECLARE @dbname nvarchar(128) = 'HRcdc'  
EXECUTE [MSXDBCDC].[dbo].[xdbcdc_update_config_version] @dbname  
GO  
  

Oracle CDC 인스턴스 프로세스는 시스템 테이블 cdc.xdbcdc_state에서 상태를 업데이트하고 오류 정보를 cdc.xdbcdc_trace 테이블에 기록합니다. xdbcdc_state 테이블은 Oracle CDC 인스턴스의 상태를 모니터링하는 데 유용합니다. 이 테이블은 최신 상태, 다양한 카운터(예: Oracle에서 읽은 변경 내용 수, SQL Server에 기록한 변경 내용 수, 기록된 커밋된 트랜잭션 수 및 현재 진행 중인 트랜잭션 수) 및 대기 시간 표시를 제공합니다.

Oracle 인스턴스 구성은 Oracle CDC Designer 콘솔에서 작동하는 테이블인 cdc.xdbcdc_config 테이블에 저장됩니다. Oracle CDC 인스턴스의 전체 구성은 대상 SQL Server 인스턴스 및 CDC 데이터베이스에 있으므로 Oracle CDC 인스턴스에 대한 SQL Server 배포 스크립트를 만들 수 있습니다. 이 작업은 Oracle CDC Service 구성 및 Oracle CDC Designer 콘솔을 사용하여 수행됩니다.

보안 고려사항

다음에서는 Oracle CDC Service에서 작업하는 데 필요한 보안 요구 사항에 대해 설명합니다.

원본 Oracle 데이터 보호

Oracle CDC Service는 Oracle 원본 데이터에 액세스할 필요가 없으며 로그 마이닝 자격 증명이 고객 Oracle 테이블에 대한 SELECT 권한을 부여하지 않는지 확인하여 보호됩니다.

원본 Oracle 변경 데이터 보호

Oracle CDC 서비스에는 서비스에서 Oracle 데이터베이스의 모든 테이블에 대한 변경 내용을 캡처할 수 있게 하는 로그 마이닝 자격 증명이 제공됩니다. 변경 데이터에는 일반 테이블에 있는 세분화된 액세스 권한이 없으므로 변경 데이터에 액세스하면 기본 제공 Oracle 데이터 액세스 제어가 무시됩니다.

캡처된 원본 Oracle 테이블에는 CDC 데이터베이스에서 스키마와 테이블 이름이 동일한 빈 미러 테이블이 있습니다. 캡처된 데이터는 SQL Server 캡처 인스턴스에 저장되며 SQL Server 데이터베이스에서 캡처된 변경 내용에 제공되는 것과 동일한 보호를 제공합니다. 캡처 인스턴스와 연결된 변경 데이터에 액세스하려면 연결된 미러 테이블의 캡처된 모든 열에 대한 선택 액세스 권한을 사용자에게 부여해야 합니다. 또한 캡처 인스턴스를 만들 때 게이팅 역할을 지정하는 경우 호출자도 지정된 게이팅 역할의 멤버여야 합니다. 메타데이터에 액세스하는 다른 일반적인 변경 데이터 캡처 함수는 public 역할을 통해 모든 데이터베이스 사용자가 액세스할 수 있지만, 반환된 메타데이터에 대한 액세스는 일반적으로 기본 원본 테이블에 대한 select 액세스 권한을 사용하고 정의된 게이팅 역할의 멤버십을 통해 제어됩니다.

즉, sysadmin 고정 서버 역할 또는 db_owner 고정 데이터베이스 역할이 있는 사용자는 기본적으로 캡처된 데이터에 대한 모든 권한을 가지며, 추가 액세스 권한은 게이팅 역할을 통해 부여할 수 있거나 캡처된 열에 대한 select 액세스 권한을 부여함으로써 부여할 수 있습니다.

원본 Oracle 로그 마이닝 자격 증명 보호

CDC 데이터베이스(cdc.xdbcdc_config 테이블)에 저장된 Oracle CDC 서비스 구성에는 로그 마이닝 사용자 이름과 관련 암호가 포함되어 있습니다.

로그 마이닝 암호는 다음 명령을 사용하여 자동으로 만들어지는 고정된 이름의 비대칭 키(xdbcdc_asym_key)를 통해 암호화되어 저장됩니다.

USE [<cdc-database-name>]  
CREATE ASYMMETRIC KEY xdbcdc_asym_key  
    WITH ALGORITHM = RSA_1024  
    ENCRYPTION BY PASSWORD = '<cdc-database-name><asym-key-password>'  
  

다른 알고리즘을 사용하는 경우 이 키를 삭제하고 동일한 이름으로 새 키를 만들어 동일한 암호로 암호화할 수 있습니다.

비대칭 키 암호는 레지스트리의 HKLM\Software\Microsoft\XDBCDCSVC\\<service-name> 경로에 저장되는 마스터 암호입니다. 이 키는 로컬 관리자 및 Oracle CDC Windows 서비스 계정만 액세스할 수 있습니다. 키에는 비대칭 키 암호를 저장하는 암호화된 이진 값 AsymmetricKeyPassword가 들어 있습니다. Oracle 로그 마이닝 자격 증명에 액세스하려면 이 레지스트리 키에 액세스해야 합니다.

ENCRYPTION BY PASSWORD 절을 사용하려면 암호가 SQL Server 인스턴스를 실행하는 컴퓨터에 대한 Windows 암호 정책 요구 사항을 충족해야 합니다. 이 작업은 해당 정책에 따라 비대칭 키 암호를 선택하여 수행됩니다.

비대칭 키 암호가 손실되면 Oracle CDC Service Designer에서 각 Oracle CDC 인스턴스에 대한 로그 마이닝 자격 증명을 다시 지정해야 합니다.

CDC 서비스에서 비대칭 키가 없는 Oracle 인스턴스 CDC 데이터베이스를 검색하거나 키가 있지만 암호가 일치하지 않는 경우 해당 비대칭 키가 CDC 데이터베이스에 자동으로 만들어집니다.

Oracle CDC Service Windows 서비스 계정

Oracle CDC Windows 서비스에 사용하는 서비스 계정에는 추가 권한이 필요 없습니다. 이 계정은 Oracle Native Client API와 SQL Server Native Client ODBC API를 모두 사용할 수 있어야 합니다. 또한 레지스트리의 서비스 구성 키에 액세스할 수 있어야 합니다(이 CDC Service 구성 콘솔에서 이에 대한 ACL을 설정함).

섹션 내용

참고 항목

로컬 CDC Service를 관리하는 방법
Oracle CDC Service 관리