다음을 통해 공유


오라클 CDC 서비스

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 인스턴스( AlwaysOn 설정으로 클러스터화되거나 미러링될 수 있음)와 연결되며 연결 정보(연결 문자열 및 액세스 자격 증명)는 서비스 구성의 일부입니다.

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 인스턴스의 상태를 모니터링하는 데 유용합니다. up-to-date 상태, 다양한 카운터(예: Oracle에서 읽은 변경 횟수, SQL Server에 기록된 변경 횟수, 커밋된 커밋된 트랜잭션 수 및 현재 진행 중인 트랜잭션 수) 및 대기 시간 표시를 제공합니다.

Oracle CDC Instance 구성은 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 서비스는 Oracle 원본 데이터에 액세스할 필요가 없으며 로그 마이닝 자격 증명이 고객 Oracle 테이블에 대한 SELECT 권한을 부여하지 않도록 하여 보호됩니다.

원본 Oracle 변경 데이터 보호

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

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

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

원본 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\경로 아래에 레지스트리에 저장된 마스터 암호입니다. 이 키는 로컬 관리자 및 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 관리