중요합니다
Attunity의 Oracle에 대한 변경 데이터 캡처는 이제 더 이상 사용되지 않습니다. 자세한 내용은 공지를 참조하세요.
이 섹션에서는 Oracle CDC Service의 몇 가지 중요한 개념을 설명합니다. 이 섹션에 포함된 개념은 다음과 같습니다.
-
이 섹션에서는 이 데이터베이스에 포함된 테이블과 CDC에 중요한 방법에 대해 설명합니다.
-
이 섹션에서는 CDC 데이터베이스에 대한 간략한 설명을 제공합니다. 이러한 데이터베이스는 Oracle CDC Designer 콘솔을 사용하여 만들어집니다. CDC 데이터베이스에 대한 자세한 내용은 CDC Designer 콘솔 설치에 포함된 설명서를 참조하세요.
-
이 섹션에서는 Oracle CDC Service를 구성하는 데 사용할 수 있는 명령줄 명령에 대해 설명합니다.
MSXDBCDC 데이터베이스
MSXDBCDC(Microsoft External-Database CDC) 데이터베이스는 SQL Server 인스턴스와 함께 Oracle용 CDC Service를 사용할 때 필요한 특수 데이터베이스입니다.
이 데이터베이스의 이름은 변경할 수 없습니다. MSXDBCDC라는 데이터베이스가 호스트 SQL Server 인스턴스에 있고 Oracle용 CDC Service에서 정의한 테이블 이외의 테이블을 포함하는 경우 호스트 SQL Server 인스턴스를 사용할 수 없습니다.
이 데이터베이스의 주요 용도는 다음과 같습니다.
SQL Server 인스턴스와 연결된 Oracle CDC Services의 레지스트리 역할을 합니다. 이 정보는 서비스의 구성과 설계 요소에 사용되며, 활성 상태인 하나를 제외하고 다른 노드에 있는 같은 이름의 여러 CDC 서비스를 조정하는 것을 지원합니다.
SQL Server 인스턴스에 포함된 Oracle CDC 인스턴스의 레지스트리, 각 인스턴스를 처리하는 CDC 서비스 및 각 인스턴스가 사용하는 구성 버전으로 사용됩니다. 이 정보는 master 데이터베이스의 sys.databases 테이블에 있는 is_cdc_enabled 열과 동일합니다. CDC 서비스는 주기적으로 dbo.xdbcdc_databases 테이블을 검사하여 CDC 구성 또는 캡처된 인스턴스 목록에 대한 변경 내용을 식별합니다.
CDC 인스턴스를 만들고 유지 관리하는 데 도움이 되는 sysadmin 소유 저장 프로시저를 보관합니다. 이는 SQL Server CDC 기능의 구현에 사용되는 시스템 프로시저와 유사합니다.
MSXDBCDC 데이터베이스 만들기
ORACLE CDC Service를 정의하려면 먼저 MSXDBCDC 데이터베이스를 만들어야 합니다. SQL Server 인스턴스에 하나의 MSXDBCDC 데이터베이스만 만들 수 있습니다. MSXDBCDC 데이터베이스는 Oracle CDC용 SQL Server 데이터베이스를 준비할 때 만들어집니다. 이 작업은 Oracle CDC Service 구성 콘솔을 사용하거나 CDC Service 구성 콘솔에서 생성된 만들기 스크립트를 실행하여 수행할 수 있습니다.
이 데이터베이스의 소유자는 SQL Server 인스턴스에서 호스트되는 모든 Oracle CDC 인스턴스를 제어할 수 있는 Oracle CDC Service 관리자입니다.
다음을 참조하세요.
MSXDBCDC 데이터베이스 테이블
이 섹션에서는 MSXDBCDC 데이터베이스의 다음 테이블에 대해 설명합니다.
dbo.xdbcdc_trace
이 표에서는 Oracle CDC Service에 대한 추적 정보를 저장합니다. 이 테이블에 저장된 정보에는 주목할 만한 상태 변경 및 추적 레코드가 포함됩니다.
Oracle CDC Service는 Windows 이벤트 로그와 추적 테이블 모두에 오류 레코드 및 일부 정보 레코드를 씁니다. 경우에 따라 추적 테이블에 액세스할 수 없을 수 있으며, 이 경우 이벤트 로그에서 오류 정보에 액세스할 수 있습니다.
다음은 dbo.xdbcdc_trace 테이블에 포함된 항목에 대해 설명합니다.
항목 | 설명 |
---|---|
시간표시 | 추적 레코드가 기록된 정확한 UTC 타임스탬프입니다. |
유형 | 다음 값 중 하나를 포함합니다. 오류 정보 추적 |
노드 | 레코드가 기록된 노드의 이름입니다. |
상태 | 상태 테이블에 사용되는 상태 코드입니다. |
하위_상태 | 상태 테이블에 사용되는 하위 상태 코드입니다. |
상태_메시지 | 상태 테이블에서 사용하는 상태 메시지입니다. |
근원 | 추적 레코드를 생성한 Oracle CDC 구성 요소의 이름입니다. |
텍스트_데이터 | 오류 또는 추적 레코드에 텍스트 페이로드가 포함된 경우의 추가 텍스트 데이터입니다. |
이진 데이터 | 오류 또는 추적 레코드에 이진 페이로드가 포함된 경우에 대한 추가 이진 데이터입니다. |
Oracle CDC 인스턴스는 변경 테이블 보존 정책에 따라 이전 추적 테이블 행을 삭제합니다.
dbo.xdbcdc_databases
이 표에는 현재 SQL Server 인스턴스의 Oracle CDC 데이터베이스에 대한 CDC Service 이름이 포함되어 있습니다. 각 데이터베이스는 Oracle CDC 인스턴스에 해당합니다. Oracle CDC Service는 이 테이블을 사용하여 시작 또는 중지할 인스턴스와 다시 구성할 인스턴스를 결정합니다.
다음 표에서는 dbo.xdbcdc_databases 테이블에 포함된 항목에 대해 설명합니다.
항목 | 설명 |
---|---|
이름 | SQL Server 인스턴스에 있는 Oracle 데이터베이스의 이름입니다. |
설정_버전 | 해당 CDC 데이터베이스 xdbcdc_config 테이블의 마지막 변경에 대한 타임스탬프(UTC) 또는 이 테이블의 현재 행에 대한 타임스탬프(UTC)입니다. UPDATE 트리거는 이 항목에 대해 GETUTCDATE() 값을 적용합니다. config_version 통해 CDC Service는 구성 변경 또는 사용/비활성화를 확인해야 하는 CDC 인스턴스를 식별할 수 있습니다. |
cdc_서비스_이름 | 이 항목은 선택한 Oracle 데이터베이스를 처리하는 Oracle CDC Service를 결정합니다. |
활성화됨 | Oracle CDC 인스턴스가 활성(1) 또는 사용 안 함(0)인지 여부를 나타냅니다. Oracle CDC Service가 시작되면 사용(1)으로 표시된 인스턴스만 시작됩니다. 참고: 다시 시도할 수 없는 오류로 인해 Oracle CDC 인스턴스를 사용하지 않도록 설정할 수 있습니다. 이 경우 오류가 해결된 후 인스턴스를 수동으로 다시 시작해야 합니다. |
dbo.xdbcdc_services
이 표에서는 호스트 SQL Server 인스턴스와 연결된 CDC 서비스를 나열합니다. 이 테이블은 CDC Designer 콘솔에서 로컬 SQL Server 인스턴스에 대해 구성된 CDC 서비스 목록을 확인하는 데 사용됩니다. 또한 CDC 서비스에서 Windows 서비스를 실행하는 하나만 지정된 Oracle CDC Service 이름을 처리하도록 하는 데 사용됩니다.
다음은 dbo.xdbcdc_databases 테이블에 포함된 캡처 상태 항목을 설명합니다.
항목 | 설명 |
---|---|
cdc_service_name | Oracle CDC Service의 이름(Windows 서비스 이름)입니다. |
cdc_service_sql_login | Oracle CDC Service에서 SQL Server 인스턴스에 연결하는 데 사용하는 SQL Server 로그인의 이름입니다. cdc_service 명명된 새 SQL 사용자가 만들어지고 이 로그인 이름과 연결된 다음 서비스에서 처리하는 각 CDC 데이터베이스에 대한 db_ddladmin, db_datareader 및 db_datawriter 고정 데이터베이스 역할의 멤버로 추가됩니다. |
참조_카운트 | 이 항목은 동일한 Oracle CDC Service가 설치된 컴퓨터의 수를 계산합니다. 동일한 이름의 Oracle CDC 서비스가 추가될 때마다 증가하며 이러한 서비스가 제거되면 감소됩니다. 카운터가 0에 도달하면 이 행이 삭제됩니다. |
활성_서비스_노드 | 현재 CDC 서비스를 처리하는 Windows 노드의 이름입니다. 서비스가 올바르게 중지되면 이 열이 null로 설정되어 더 이상 활성 서비스가 없음을 나타냅니다. |
활성 서비스 하트비트 | 이 항목은 현재 CDC 서비스를 추적하여 여전히 활성 상태인지 확인합니다. 이 항목은 활성 CDC 서비스에 대한 현재 데이터베이스 UTC 타임스탬프로 정기적으로 업데이트됩니다. 기본 간격은 30초이지만 해당 간격은 구성할 수 있습니다. 보류 중인 CDC 서비스에서 구성된 간격이 경과한 후 하트비트가 업데이트되지 않은 것을 감지하면 보류 중인 서비스가 활성 CDC 서비스 역할을 인수하려고 시도합니다. |
옵션 | 이 항목은 추적 또는 튜닝과 같은 보조 옵션을 지정합니다.
이름[=value][; ]의 형태로 작성되었습니다. 옵션 문자열은 ODBC 연결 문자열과 동일한 의미 체계를 사용합니다. 옵션이 부울 값이 '예/아니요'인 경우, 값은 이름만 포함할 수 있습니다. 추적에는 다음과 같은 가능한 값이 있습니다. 참 에 false off <class name>[,class name>] 기본값은 false입니다. service_heartbeat_interval 서비스가 active_service_heartbeat 열을 업데이트하는 시간 간격(초)입니다. 기본값은 30 입니다. 최대값은 3600입니다. service_config_polling_interval CDC 서비스에서 구성 변경 내용을 확인하는 폴링 간격(초)입니다. 기본값은 30 입니다. 최대값은 3600입니다. sql_command_timeout SQL Server에서 작동하는 명령 시간 제한입니다. 기본값은 1입니다. 최대값은 3600입니다. |
MSXDBCDC 데이터베이스 저장 프로시저
이 섹션에서는 MSXDBCDC 데이터베이스의 다음 저장 프로시저에 대해 설명합니다.
dbo.xcbcdc_reset_db(데이터베이스 이름)
이 절차는 Oracle CDC 인스턴스의 데이터를 지웁니다. 다음과 같이 사용됩니다.
이전 데이터를 무시하고 데이터 캡처를 다시 시작하려면(예: 원본 데이터베이스 복구 다음 또는 Oracle 트랜잭션 로그 중 일부를 사용할 수 없는 비활성 상태)
CDC 상태(특히 모든 cdc.*tables 데이터)에 손상이 있는 경우
dbo.xcbcdc_reset_db 프로시저는 다음 작업을 수행합니다.
CDC 인스턴스를 중지합니다(활성 상태인 경우).
변경 테이블, cdc_lsn_mapping 테이블 및 cdc_ddl_history 테이블을 자립니다.
cdc_xdbcdc_state 테이블을 지웁니다.
cdc_change_table의 각 행에 대해 start_lsn 열을 삭제합니다.
dbo.xcbcdc_reset_db 프로시저를 사용하려면 사용자는 이름이 지정되는 CDC Instance 데이터베이스에 대한 db_owner 데이터베이스 역할의 멤버이거나 sysadmin 또는 serveradmin 고정 서버 역할의 다른 멤버여야 합니다.
CDC 테이블에 대한 자세한 내용은 CDC Designer 콘솔의 도움말 시스템에서 CDC 데이터베이스 를 참조하세요.
dbo.xdbcdc_disable_db(dbname) 데이터베이스 비활성화 호출
dbo.xcbcdc_disable_db 프로시저는 다음 작업을 수행합니다.
- MSXDBCDC.xdbcdc_databases 테이블에서 선택한 CDC 데이터베이스의 항목을 제거합니다.
dbo.xcbcdc_disable_db 프로시저를 사용하려면 사용자가 명명되는 CDC 인스턴스에 대한 db_owner 데이터베이스 역할의 멤버이거나 sysadmin 또는 serveradmin 고정 서버 역할의 멤버여야 합니다.
CDC 테이블에 대한 자세한 내용은 CDC Designer 콘솔의 도움말 시스템에서 CDC 데이터베이스를 참조하세요.
dbo.xcbcdc_add_service(svcname,sqlusr)
dbo.xcbcdc_add_service 프로시저는 MSXDBCDC.xdbcdc_services 테이블에 항목을 추가하고 MSXDBCDC.xdbcdc_services 테이블의 서비스 이름에 대한 ref_count 열에 1씩 증분을 추가합니다. ref_count 0이면 행이 삭제됩니다.
dbo.xcbcdc_add_service<서비스 이름, 사용자 이름> 프로시저를 사용하려면 사용자는 이름이 지정되는 CDC 인스턴스 데이터베이스에 대한 db_owner 데이터베이스 역할의 멤버이거나 sysadmin 또는 serveradmin 고정 서버 역할의 멤버여야 합니다.
dbo.xdbcdc_start(dbname) 데이터베이스 시작을 명령하는 함수입니다.
dbo.xdbcdc_start 프로시저는 선택한 CDC 인스턴스를 처리하는 CDC 서비스에 시작 요청을 보내 변경 처리를 시작합니다.
dbo.xcdcdc_start 프로시저를 사용하려면 사용자가 CDC 데이터베이스에 대한 db_owner 데이터베이스 역할의 멤버이거나 SQL Server 인스턴스에 대한 sysadmin 또는 serveradmin 역할의 멤버여야 합니다.
dbo.xdbcdc_stop(dbname) - 데이터베이스 변경 데이터 캡처 중지 기능
dbo.xdbcdc_stop 프로시저는 선택한 CDC 인스턴스를 처리하는 CDC 서비스에 중지 요청을 보내 변경 처리를 중지합니다.
dbo.xcdcdc_stop 프로시저를 사용하려면 사용자가 CDC 데이터베이스에 대한 db_owner 데이터베이스 역할의 멤버이거나 SQL Server 인스턴스에 대한 sysadmin 또는 serveradmin 역할의 멤버여야 합니다.
CDC 데이터베이스
CDC Service에 사용되는 각 Oracle CDC 인스턴스는 CDC Database라는 특정 SQL Server 데이터베이스와 연결됩니다. 이 SQL Server 데이터베이스는 Oracle CDC Service와 연결된 SQL Server 인스턴스에서 호스트됩니다.
CDC Database에는 특수한 cdc 스키마가 포함되어 있습니다. Oracle CDC Service는 접두사 xdbcdc_ 테이블 이름과 함께 이 스키마를 사용합니다. 이 스키마는 보안 및 일관성을 위해 사용됩니다.
Oracle CDC 인스턴스와 CDC 데이터베이스는 모두 Oracle CDC Designer 콘솔을 사용하여 만들어집니다. CDC 데이터베이스에 대한 자세한 내용은 Oracle CDC Designer 콘솔 설치에 포함된 설명서를 참조하세요.
명령줄을 사용하여 CDC Service 구성
명령줄에서 Oracle CDC Service 프로그램(xdbcdcsvc.exe)을 작동할 수 있습니다. CDC Service 프로그램은 네이티브 32비트/64비트 Windows 실행 파일입니다.
참고 항목
CDC Service Command-Line 인터페이스를 사용하는 방법
서비스 프로그램 명령
이 섹션에서는 CDC 서비스를 구성하는 데 사용되는 다음 명령을 설명합니다.
설정
스크립트에서 Oracle CDC Service 구성을 업데이트하는 데 사용합니다 Config
. 이 명령은 CDC 서비스 구성의 특정 부분만 업데이트하는 데 사용할 수 있습니다(예: 비대칭 키 암호를 모르는 연결 문자열만). 컴퓨터 관리자가 명령을 실행해야 합니다. 다음은 명령의 예입니다 Config
.
"<path>xdbcdcsvc.exe" config
<cdc-service-name>
[connect= <sql-server-connection-string>]
[key= <asym-key-password>]
[svcacct= <windows-account> <windows-password>]
[sqlacct= <sql-username> <sql-password>]
위치:
cdc-service-name 은 업데이트할 CDC 서비스의 이름입니다. 필수 매개 변수입니다.
sql-server-connection-string 은 업데이트할 연결 문자열입니다. 연결 문자열에 공백 또는 따옴표가 포함된 경우 큰따옴표(")로 래핑해야 합니다. 포함된 따옴표는 따옴표를 두 번 사용하여 처리됩니다.
asym-key-password 는 업데이트할 암호입니다.
windows-account, windows-password 는 업데이트 중인 서비스에 대한 Windows 계정 자격 증명입니다.
sql-username, sql-password 는 업데이트되는 SQL Server 인증 자격 증명입니다. sqlacct에 빈 사용자 이름과 빈 암호가 모두 있는 경우 Oracle CDC Service는 Windows 인증을 사용하여 SQL Server에 연결합니다.
참고: 공백 또는 큰따옴표를 포함하는 모든 매개 변수는 큰따옴표(")로 래핑되어야 합니다. 포함된 큰따옴표는 두 배가 되어야 합니다(예: "A#B" D 를 암호로 사용하려면 ""A#B"" D"를 입력).
창조하다
스크립트에서 Oracle CDC Service를 만드는 데 사용합니다 Create
. 컴퓨터 관리자가 명령을 실행해야 합니다. 다음은 명령의 예입니다.Create
"<path>xdbcdcsvc.exe" create
<cdc-service-name>
[connect= "<sql-server-connection-string>"]
[key= <asym-key-password>]
[svcacct <windows-account> <windows-password>]
[sqlacct <sql-username> <sql-password>]
위치:
cdc-service-name 은 새로 만든 서비스의 이름입니다. 이 이름의 서비스가 이미 있는 경우 프로그램에서 오류를 반환합니다. 공백이 있는 긴 이름이나 이름을 사용하면 안 됩니다. "/" 및 "\" 문자는 서비스 이름에 유효한 문자가 아닙니다. 필수 매개 변수입니다.
sql-server-connection-string 은 새 Oracle CDC Service와 연결된 SQL Server 인스턴스에 연결하는 데 사용할 연결 문자열입니다.
asym-key-password 는 원본 데이터베이스 로그 마이닝 자격 증명을 저장하는 데 사용되는 비대칭 키를 보호하는 암호입니다.
windows-account, windows-password 는 생성되는 Oracle CDC Service와 연결된 계정 이름 및 암호입니다.
sql-username, sql-password 는 SQL Server 인스턴스에 연결하는 데 사용되는 SQL Server 계정 이름 및 암호입니다. 이러한 매개 변수가 모두 비어 있으면 Oracle용 CDC Service는 Windows 인증을 사용하여 SQL Server에 연결합니다.
참고: 공백 또는 큰따옴표를 포함하는 모든 매개 변수는 큰따옴표(")로 래핑되어야 합니다. 포함된 큰따옴표는 두 배가 되어야 합니다(예: 암호로 "A#B" D 를 사용하려면 "A#B"" D"를 입력합니다.)
삭제
스크립트에서 Oracle CDC Service를 완전히 삭제하는 데 사용합니다 Delete
. 이 명령은 컴퓨터 관리자가 실행해야 합니다. 다음은 명령의 예입니다 Delete
.
"<path>xdbcdcsvc.exe" delete
<cdc-service-name>
위치:
cdc-service-name 은 삭제할 CDC 서비스의 이름입니다.
참고: 공백 또는 큰따옴표를 포함하는 모든 매개 변수는 큰따옴표(")로 래핑되어야 합니다. 포함된 큰따옴표는 두 배가 되어야 합니다(예: "A#B" D 를 암호로 사용하려면 ""A#B"" D"를 입력).
또한 참조하십시오
CDC Service Command-Line 인터페이스를 사용하는 방법
CDC용 SQL Server를 준비하는 방법