Oracle GoldenGate용 데이터베이스 준비
Extract for SQL Server에서 캡처에 사용할 원본 데이터베이스 테이블에서 보완 로깅을 사용으로 설정하는 방법과 이전 CDC 스테이징 데이터를 비우는 방법을 알아봅니다.
다음을 사용하여 CDC Capture에 대해 자세히 알아볼 수 있습니다.
Oracle GoldenGate for SQL Server CDC Capture Replication http://www.oracle.com/webfolder/technetwork/tutorials/obe/fmw/goldengate/12c/sql_cdcrep/sql_cdcrep.html 사용
CDC 보완 로깅을 사용으로 설정하는 중
CDC Extract를 사용하면 변경 데이터를 캡처하는 방법이 SQL Server 변경 데이터 캡처 테이블을 통해 수행되므로 변경 데이터가 Extract에 의해 올바르게 활성화, 유지 관리 및 캡처되도록 아래의 절차 및 요구 사항을 따라야 합니다.
Extract가 트랜잭션을 재생성하는 데 필요한 정보를 캡처할 수 있도록 ADD TRANDATA 명령을 사용하여 보완 로깅을 활성화합니다.
ADD TRANDATA는 Oracle GoldenGate에서 캡처할 모든 테이블에 대해 실행되어야 하며, 이를 위해서는 필요한 Oracle GoldenGate 테이블 및 내장 프로시저를 생성하기 위해 적합한 스키마를 사용해야 합니다.
CDC Extract에 대한 보완 로깅을 사용으로 설정하면 다음이 수행됩니다.
-
아직 사용으로 설정되지 않은 경우 데이터베이스 레벨에서 SQL Server 변경 데이터 캡처를 사용으로 설정합니다.
-
EXECUTE sys.sp_cdc_enable_table를 실행하여 보완 로깅이 사용으로 설정된 각 기본 테이블에 대해 변경 데이터 캡처 스테이징 테이블을 생성하고 각 CDC 테이블에 대해 트리거를 생성합니다. CDC 테이블은 데이터베이스 내의 시스템 테이블의 일부로 존재하며cdc.OracleGG_basetableobjectid_CT와 같은 이름 지정 규칙을 가집니다. -
이름 지정 규칙
ggschema.OracleGGTranTables의 추적 테이블을 생성합니다. 이 테이블은 CDC 테이블에 대한 트랜잭션 표시자를 저장하는 데 사용되며 CDC 테이블에 대한 트리거가 실행될 때 채워집니다. 테이블은GLOBALS파일의GGSCHEMA매개변수에 나열된 스키마가 소유합니다. -
각 CDC 테이블에 대해 고유한 인출 내장 프로시저와 Extract가 작동하는 데 필요한 기타 여러 내장 프로시저를 생성합니다. 이러한 내장 프로시저는
GLOBALS파일의GGSCHEMA매개변수에 나열된 스키마가 소유합니다. -
또한 테이블에 대해 CDC를 활성화하는 과정에서 SQL ServerSQL Server는 데이터베이스당 두 개의 작업을 생성합니다.As part of enable CDC for tables, SQL ServerSQL Server creates two jobs per database:
cdc.dbname_capturecdc.dbname_cleanup -
CDC 캡처 작업은 SQL Server 트랜잭션 로그를 읽고 CDC 테이블에 데이터를 채우는 작업이며, Extract가 트랜잭션을 캡처하는 CDC 테이블에서 가져온 작업입니다. 따라서 CDC 캡처 작업이 항상 실행되는 것이 매우 중요합니다. 또한 SQL Server 에이전트를 항상 실행하도록 설정하고 SQL Server가 시작될 때 자동으로 실행되도록 설정해야 합니다.
주: 데이터베이스에 대해 SQL Server 트랜잭션 복제도 사용으로 설정된 경우 CDC 캡처 작업이 존재하지 않고 대신 SQL Server 로그 리더 에이전트 작업만 존재합니다.
-
더 나은 처리량 및 튜닝 정보를 위해 CDC 캡처 작업을 조정할 수 있는 방법은 CDC 캡처 방법 작동 고려 사항을 참조하십시오.
-
Microsoft에서 생성한 CDC 정리 작업에는 Oracle GoldenGate Extract가 CDC 테이블에서 데이터를 캡처했는지 여부에 대한 종속성이 없습니다. 따라서
TRANDATA가 사용으로 설정된 직후 CDC 정리 작업을 사용 안함으로 설정하거나 삭제하고 Oracle GoldenGate의 고유한 변경 데이터 비우기 태스크를 사용으로 설정하려면 추가 단계가 필요합니다. 자세한 내용은 CDC 스테이징 데이터 비우기를 참조하십시오.
명령행 인터페이스를 사용하여 보완 로깅을 활성화하려면 다음과 같은 고급 단계를 사용하십시오.
-
데이터베이스 사용자 및 권한 준비 항목을 검토하여 변경 데이터 캡처에 대해 데이터베이스를 사용으로 설정하는 데 필요한 권한 및 단계를 결정합니다(아직 설정되지 않은 경우). 데이터베이스가 CDC에 대해 사용으로 설정되지 않았지만 관리자가 변경 데이터 캡처에 대해 데이터베이스를 수동으로 사용으로 설정하여 부정할 수 있는 경우 GoldenGate에 대해 향상된 권한이 필요할 수 있습니다.
-
SQL Server용 Google Cloud SQL의 경우 서비스 관리자 사용자가 변경 데이터 캡처에 대해 데이터베이스를 수동으로 사용으로 설정하고 다음 명령을 실행해야 합니다.
EXEC msdb.dbo.gcloudsql_cdc_enable_db 'source_database'; -
SQL Server 및 Azure SQL 관리 인스턴스의 경우 사용자에게 시스템 관리자 권한이 있는 경우
TRANDATA를 추가하면 변경 데이터 캡처에 대한 데이터베이스를 설정하려고 시도합니다. 그렇지 않으면 데이터베이스 관리자가 소스 데이터베이스에 대해 다음 명령을 실행하여TRANDATA를 추가하기 전에 CDC에 대한 데이터베이스를 수동으로 사용으로 설정할 수 있습니다.EXEC sys.sp_cdc_enable_db; -
Amazon RDS for SQL Server의 경우 사용자에게 권한이 부여된 경우
TRANDATA를 추가하면 변경 데이터 캡처에 대한 데이터베이스도 설정하려고 시도합니다. 그렇지 않으면 마스터 자격 증명을 가진 데이터베이스 관리자가 소스 데이터베이스에 대해 다음 명령을 실행하여TRANDATA를 추가하기 전에 CDC에 대한 데이터베이스를 수동으로 사용으로 설정할 수 있습니다.EXEC msdb.dbo.rds_cdc_enable_db 'source_database'
-
-
소스 Oracle GoldenGate 설치에서
GLOBALS파일의 매개변수가GGSCHEMA schemaname이고 사용된 스키마 이름(CREATE SCHEMA schemaname)이 소스 데이터베이스에 생성되었는지 확인합니다. 이 스키마는 데이터베이스에서 생성된 이후의 모든 Oracle GoldenGate 구성요소에서 사용되므로 'ggschema'과 같이 Oracle GoldenGate에서만 사용되는 고유 스키마를 생성하고 SQL Server 스키마dbo또는cdc를 사용하지 않는 것이 좋습니다. -
소스 Oracle GoldenGate 시스템에서 명령행 인터페이스(Admin Client)를 엽니다.
-
데이터베이스 로그인 인증서를 사용하여 데이터베이스에 연결합니다.
-
Extract에서 캡처할 각 테이블에 대해 다음 명령을 실행합니다. 와일드카드를 사용하여 테이블 이름을 여러 개 지정할 수 있습니다.
ADD TRANDATA owner.tableADD TRANDATA owner.*선택적으로 기존 파일 그룹 이름과 함께
FILEGROUP옵션을 사용하여 SQL Server 변경 데이터 캡처 스테이지 테이블이 배치될 파일 그룹을 지정할 수도 있습니다.ADD TRANDATA owner.table FILEGROUP cdctablesSee ADD TRANDATA
자세한 내용은 ADD TRANDATA를 참조하십시오.
CDC 스테이징 데이터 비우기
보완 로깅을 사용으로 설정하면 Extract가 트랜잭션을 재구성하는 데 필요한 데이터가 일련의 SQL Server CDC 시스템 테이블과 트랜잭션 내의 작업 순서를 추적하는 데 사용되는 Oracle GoldenGate 객체에 저장됩니다. 이러한 테이블은 데이터베이스 내의 데이터 저장 영역을 줄이기 위해 일상적인 지우기가 필요합니다. As part of enabling supplemental logging using TRANDATA, SQL Server creates its own Change Data Capture Cleanup job, however this job is unaware that an Extract may still require data from these CDC system tables and can remove that data before the Extract has a chance to capture it.
처리 중 Extract에 필요한 데이터가 CDC 시스템 테이블에서 삭제된 경우 다음 해결 조치 중 하나가 필요할 수 있습니다.
-
추출을 변경하여 CDC 데이터를 사용할 수 있는 이후 시점부터 캡처하고 대상에서 가능한 데이터 손실을 허용합니다.
-
소스 및 대상 테이블을 재동기화한 다음 Oracle GoldenGate 환경을 다시 시작합니다.
Extract가 CDC 데이터를 처리하기 전에 제거되는 CDC 데이터의 상황을 해결하려면 Oracle GoldenGate for SQL Server에서 변경 데이터 비우기 작업을 생성해야 합니다. 이 태스크는 CDC 스테이징 데이터를 비우는 동시에 추출이 아직 처리하지 않은 데이터가 비워지지 않도록 합니다.
보완 로깅(TRANDATA)을 사용으로 설정한 후 추출을 시작하기 전에 다음 단계를 즉시 사용하여 Oracle GoldenGate 변경 데이터 비우기 태스크를 생성합니다. 변경 데이터 비우기 작업은 관리 서비스 내에서 실행되며 처음 생성될 때 SQL Server CDC 정리 작업을 자동으로 삭제합니다. 관리 서비스에 의해 실행되므로 변경 데이터 비우기 태스크에 대한 SQL Server 에이전트 작업이 없습니다. 따라서 정리 작업이 올바르게 작동하려면 관리 서비스가 실행 중이어야 합니다.
변경 데이터 비우기 태스크를 생성하려면 다음을 수행합니다.
Oracle GoldenGate for Microservices Architecture를 사용할 경우 테이블에 TRANDATA를 추가한 후 Extract를 시작하기 전에 데이터베이스에서 CDC 정리를 수행하려면 변경 데이터 비우기 태스크를 생성해야 합니다. 이 작업은 다음 중 하나를 통해 수행할 수 있습니다.
-
수동 REST API 요청
-
관리 서버 웹 UI
관리 서비스 웹 UI를 사용하여 변경 데이터 비우기 태스크를 생성하려면 1을 선택합니다. 왼쪽 창에서 태스크 섹션을 확장합니다.
-
태스크 페이지에서 변경 데이터 비우기를 누릅니다.
-
더하기 기호를 클릭하여 양식을 표시하고, 필수 필드를 작성하여 새 변경 데이터 비우기 태스크를 생성합니다.
-
작업 이름: 생성할 비우기 작업의 이름입니다.
-
사용: 작업을 기본값인 사용으로 설정합니다.
-
인증서 도메인 및 인증서 별칭: 소스 데이터베이스에 대한 기존 인증서 별칭을 선택합니다.
-
규칙 유지: 이 값은 소스 데이터베이스에 보관할 CDC 스테이징 데이터의 양을 시간 또는 일 단위로 결정합니다. Oracle GoldenGate 버전에 따라 기본값은 3일 또는 1시간입니다. CDC 데이터 보존 기간을 줄이면 데이터베이스에 저장된 CDC 스테이징 데이터의 양이 줄어들지만 사용자가 Extract의 위치를 스테이지 테이블에 있는 데이터보다 오래된 시간으로 다시 재지정하는 기능이 제한됩니다.
-
비우기 빈도: 이 값은 태스크가 실행되는 빈도를 나타내며 기본값은 10분마다입니다. 지우기 작업의 오버헤드가 높은 유저 작업 기간 동안 데이터베이스 성능에 영향을 주지 않는 한 기본값을 유지하는 것이 좋습니다. 주: 소스 데이터베이스당 하나의 변경 데이터 비우기 태스크만 생성하십시오.
-
Oracle GoldenGate CDC 정리 작업에 대한 추가 정보는 CDC 캡처 방법 작동 고려 사항에서 확인할 수 있습니다.
양방향 루프 감지 활성화
루프 감지는 한 소스 데이터베이스에 대한 Extract가 다른 소스 데이터베이스에서 Replicat가 전송한 트랜잭션을 다시 캡처하지 않도록 Oracle GoldenGate의 양방향 구현에 대한 요구 사항입니다.
기본적으로 CDC 추출 캡처 방법을 사용하면 Replicat가 Extract가 구성된 데이터베이스로 커밋한 모든 트랜잭션이 Replicat가 전달 중인 테이블에 대해 보완 로깅이 사용으로 설정된 경우 Replicat에서 해당 트랜잭션을 다시 캡처합니다.
Replicat에서 적용하는 재캡처 트랜잭션을 무시하려면 CDC Extract에 TRANLOGOPTIONS EXCLUDEFILTERTABLE 매개변수를 사용해야 합니다. 필터링 테이블로 사용되는 테이블은 Replicat에 대해 생성해야 하는 Oracle GoldenGate 체크포인트 테이블입니다.
필터 테이블을 생성하고 추가 로깅을 사용으로 설정하려면 다음과 같이 하십시오.
아래 단계에서는 SQL Server 시스템 관리자(sysadmin) 역할의 멤버인 데이터베이스 사용자가 필요합니다.
-
소스 시스템에서 Admin Client를 실행합니다.
-
관리 클라이언트에서 배치에 연결합니다.
-
다음 명령을 실행하여 데이터베이스에 로그인합니다.
DBLOGIN USERIDALIAS alias -
Replicat가 소스 데이터베이스로 데이터를 전달하는 데 사용하는 Oracle GoldenGate 체크포인트 테이블을 생성합니다.
예:
ADD CHECKPOINTTABLE ogg.ggchkptGLOBALS파일의GGSCHEMA매개변수에 사용된 것과 동일한 스키마 이름을 사용하는 것이 좋습니다. -
새로 생성된 체크포인트 테이블에 대해 보완 로깅을 활성화합니다.
예:
ADD TRANDATA ogg.ggchkpt -
체크포인트 테이블 정보를 사용하여 Replicat를 추가합니다.
예:
ADD REPLICAT repe, EXTTRAIL north/ea,checkpointtable ogg.ggchkpt -
필터링 테이블에 대해 Replicat의 체크포인트 테이블을 사용하여 Extract를
EXCLUDEFILTERTABLE매개변수로 구성합니다.TRANLOGOPTIONS EXCLUDEFILTERTABLE ogg.ggchkpt