ADD EXTRACT
지원되는 Db2, HP NonStop, MySQL, Oracle, PostgreSQL, SQL Server, Sybase ASE 및 Yugabyte 데이터베이스에 적합합니다.
ADD EXTRACT를 사용하여 Extract라는 소스 데이터베이스 캡처 프로세스를 생성할 수 있습니다. Extract는 데이터베이스 공급업체에 따라 데이터베이스 로그나 다른 수단을 통해 현재 트랜잭션을 캡처하는 변경 데이터 Extract로 생성할 수도 있고, 데이터베이스 테이블에 존재하는 레코드를 캡처할 초기 로드 Extract로 생성할 수도 있습니다.
소스 데이터베이스당 하나의 변경 데이터 또는 하나의 초기 로드 Extract만 생성하는 것이 좋습니다. 단, 드문 경우지만 데이터베이스당 여러 Extract를 사용하면 캡처 처리량이 향상될 수 있습니다.
Oracle GoldenGate는 운영체제에서 사용 가능한 리소스에 따라 배치당 다수의 동시 Extract 및 Replicat 프로세스를 지원할 수 있습니다. 단, Extract 또는 Replicat 프로세스가 더 추가되면 시스템 리소스를 모니터링하고 배치당 총 프로세스 수를 300개 이하로 유지하는 것이 좋습니다.
참고:
-
이전 Extract와 동일한 이름으로 Extract를 생성하는 경우 이전 Extract가 완전히 제거되고 삭제되었는지 확인합니다. DELETE EXTRACT를 사용하여 EXTRACT 및 모든 해당 구성요소를 제거할 수 있습니다.
-
이 명령은
DESC옵션에 대해 입력한 모든 텍스트를 포함하여 모든 키워드와 입력에 대해 500바이트 크기를 초과할 수 없습니다. -
Db2 for i의 경우 이 명령은 모든 저널에 대해 전역 시작점을 설정하므로 필요한 첫번째 단계입니다.
ADD EXTRACT명령을 실행한 후 선택적으로 적절한 저널 옵션과 함께ALTER EXTRACT명령을 사용하여 특정 저널 시퀀스 번호에서 제공된 저널을 배치할 수 있습니다. -
Oracle 및 PostgreSQL 데이터베이스의 경우 Extract를 추가하기 전에
DBLOGIN USERIDALIAS을 사용하여 소스 데이터베이스에 대한 접속을 설정한 다음REGISTER EXTRACT명령을 실행합니다. 자세한 내용은REGISTER EXTRACT명령을 참조하십시오. -
SQL Server의 경우 Extract를 추가하기 전에
DBLOGIN USERIDALIAS를 사용하여 소스 데이터베이스에 대한 접속을 설정합니다. 이는 관리 서비스가 인증서 정보를 Extract 프로세스와 바인드하는 데 필요합니다.
구문
ADD EXTRACT extract-name
| { SOURCEISTABLE |
| [ INTEGRATED ] TRANLOG
| {, BEGIN [ NOW | yyyy-mm-ddThh:mm.ssZ | LSN value | EOL | EOF | EXTRBA archive-offset-number | SCN scn }
| [, DESC description ]
| [, CRITICAL [ YES | NO ] ]
| [, ENCRYPTIONPROFILE encryption-profile-name]
| [, GTIDSET gtidset
| [, PROFILE
| [ AUTOSTART [ YES | NO ]
| [ DELAY delay-number ] ]
| [ AUTORESTART [ YES | NO ]
| [ RETRIES retries-number ]
| [ WAITSECONDS wait-number ]
| [ RESETSECONDS reset-number ]
| [ DISABLEONFAILURE [ YES | NO ] ] ] ]
| [ LOGNUM lognum]
| [ LOGPOS logpos]
extract_name
Extract의 이름입니다. 최대 8자를 포함할 수 있습니다. 프로세스 및 파일에 대한 이름 선택을 참조하십시오.
SOURCEISTABLE
Oracle GoldenGate를 사용하여 초기 로드에 대해 지정된 테이블에서 전체 레코드를 추출하는 Extract 작업을 생성합니다. SOURCEISTABLE을 사용하는 경우 서비스 옵션을 지정하지 마십시오.
태스크 매개변수는 매개변수 파일에서 지정해야 합니다. Oracle GoldenGate Microservices Documentation의 Admin Client를 사용하여 초기 로드 추출 추가를 참조하십시오.
TRANLOG [bsds_name]
모든 데이터베이스에 이 옵션을 사용합니다. TRANLOG에는 BEGIN 옵션이 필요합니다.
(Db2 on z/OS) You can use the bsds_name option for Db2 on a z/OS system to specify the Bootstrap Data Set file name of the transaction log, though it is not required and is not used. 기존 TRANLOG 매개변수를 변경하지 않아도 됩니다.
(Oracle) Extract는 Oracle 리두 로그를 직접 읽습니다. 대체 구성은 INTEGRATED TRANLOG를 참조하십시오.
INTEGRATED TRANLOG
Oracle의 경우 적합합니다.
통합 캡처 모드로 Extract를 추가합니다. 이 모드에서 Extract는 LCR(논리적 변경 레코드)을 Extract로 직접 전달하는 데이터베이스 로그마이닝 서버와 통합됩니다. INTEGRATED TRANLOG를 사용하기 전에 REGISTER EXTRACT 명령을 사용합니다.
BEGIN {NOW |
yyyy-mm-ddthh:mm.ssZ} |
데이터 소스에서 처리를 시작할 시간기록을 지정합니다.
주: Extract를 특정 시간 기록에 배치하기 전에 Extract를 등록해야 합니다.
-
NOWNOW는ADD EXTRACT명령이 실행되는 시간을 지정하며, Extract가 시작될 때 해당 특정 시간 또는 그 이후에 트랜잭션 경계에 배치를 시도합니다. Extract를NOW에 배치하는 것은LSN,SCN또는LRI에 의한 배치와 같은 다른 방법만큼 정확하지 않으며 데이터베이스 서버와 Oracle GoldenGate 서버를 동일한 시간 및 시간대로 설정해야 합니다.Db2 LUW의 경우 커밋 및 종료 트랜잭션 레코드만 시간기록을 포함하므로 Extract 시작 위치는 해당 시간기록을 기준으로만 계산될 수 있습니다. 이는 Oracle GoldenGate가 사용하는 API의 제한사항입니다. 시간기록별 배치는 정확하지 않으며 오래 걸릴 수도 있으므로 유의해야 합니다. 가능한 경우 항상
LRI또는EOL옵션을 사용하는 것이 좋습니다. -
yyyy-mm-ddthh:mm.ssZ제공된 형식의 날짜 및 시간(시간기록)입니다. 2017-07-14T14:54:45Z를 예로 들 수 있습니다.
-
yyyy-mm-ddT[ hh:mi:[ss[.cccccc]]]Z제공된 형식의 날짜 및 시간(시간기록)입니다. Oracle Extract 및 PostgreSQL용 Extract의 경우 시간기록 값은 Extract가 데이터베이스에 등록된 시간기록보다 커야 합니다.
PostgreSQL의 시간기록별 배치에는 다음 시나리오가 포함됩니다.
-
시나리오 1
track_commit_timestamp가off인 경우 사용된 배치 방법에 관계없이 Extract 프로세스가 시작될 때 다음 출력이 표시됩니다.2020-04-29T02:15:54Z -
시나리오 2
Extract가 등록되기 전
track_commit_timestamp가 사용으로 설정된 경우 다음 예에서와 같이 레코드가 소스 데이터베이스에서 푸시된 다음 올바른 시간기록이 표시됩니다.2020-04-29 02:19:07 INFO OGG-01515 Positioning to begin time Apr 29,2020 2:18:38 AM. -
시나리오 3
Extract가 등록된 후
track_commit_timestamp가 사용으로 설정된 경우 커밋 시간기록이 연관된transaction ID로 구축되지 않은 로그에서 오래된 레코드가 사용될 수 있습니다. 이 경우 Extract가 시간기록을 가져오지 않으면 시나리오 1에 언급된 기본 시간기록을 사용하여 폴백합니다. 출력은 다음과 비슷합니다.020-04-29 01:55:07 INFO OGG-01517 Position of first record processed LSN: 0/221D028, Jan 1, 1970 12:00:00 PM. -
복제 슬롯이 이동된 경우 과거 시간기록을 지정할 수 없습니다.
-
EXTRBA archive-offset_number
Db2 z/OS의 경우 적합합니다.
데이터 캡처를 시작할 트랜잭션 로그 내 상대 바이트 주소를 지정합니다.
필요한 형식은 0Xnnn입니다. 여기서 nnn은 1~20자리 16진수입니다(첫번째 문자는 숫자 0이며 두번째 문자는 대문자 또는 소문자(x)일 수 있습니다).
EOL
Db2 for i, Db2 LUW, MySQL, PostgreSQL 및 SQL Server의 경우 적합합니다.
다음 레코드를 쓸 로그 파일(또는 저널)의 끝에서 시작하도록 처리를 구성합니다. 활성 트랜잭션은 캡처되지 않습니다.
Db2 LUW의 경우 로그 파일의 활성 LRI 값에서 시작하도록 처리를 구성합니다. 활성 LRI는 다음 레코드를 쓸 로그 파일의 끝에 있는 위치입니다. 활성 트랜잭션은 캡처되지 않습니다.
PostgreSQL의 경우 EOL별 위치에 DBLOGIN이 필요합니다.
MySQL의 경우 파일 끝에 해당하는 위치를 찾아 거기서 트랜잭션을 읽기 시작합니다. 데이터가 바이너리 로그에 지속적으로 기록되는 경우 EOL 위치가 정확하지 않습니다.
EOF
MySQL, Db2 z/OS, Db2 LUW, SQL Server, PostgreSQL, Oracle GoldenGate for DAA의 경우 적합합니다.
LSN value
Db2 z/OS, PostgreSQL 및 SQL Server의 경우 적합합니다.
데이터 캡처를 시작할 트랜잭션 LSN를 지정합니다. 이 옵션에 대한 별칭은 EXTLSN입니다. LSN에 배치는 정확합니다.
Db2 z/OS의 경우 LSN 값은 일련의 16진수 또는 일련의 10진수일 수 있습니다. 16진수 형식인 경우 0X 또는 0x 뒤에 1-20개의 16진수(0-9, a-g 또는 A-G)이 와야 합니다. 10진수 형식인 경우 접두어가 없으며 1-25개의 10진수 0-9가 있습니다.
PostgreSQL의 경우 LSN 값은 hi 또는 lo일 수 있습니다. 로그 파일의 시작점에 대해 값을 hi로 설정합니다. Lo는 로그 파일의 오프셋입니다. LSN 위치는 복제 슬롯 다시 시작 위치와 미리 쓰기 로그 현재 위치 사이에 있어야 합니다. 자체적으로 지정된 위치가 언급된 범위 사이에 존재하는 경우 Extract가 오류를 발생시킵니다.
SQL Server의 경우 LSN는 데이터 캡처를 시작할 트랜잭션 LSN을 지정합니다. 이 옵션에 대한 별칭은 EXTLSN입니다.
지정된 LSN은 cdc.lsn_time_mapping 시스템 테이블에서 발견된 적합한 tran_begin_lsn으로 존재해야 합니다. 그렇지 않으면 Extract가 제공된 LSN 필드 뒤에 배치하려고 시도합니다.
SQL Server에 대한 유효한 LSN 사양은 다음으로 구성됩니다.
-
0X00000d7e:0000036b:0001에서와 같이 선행 0과 0X 접두어로 채워진 콜론으로 구분된 16진수 문자열(8:8:4)
-
0Xd7e:36b:1에서와 같이 0X 접두어가 있고 선행 0이 없는 콜론으로 구분된 16진수 문자열
다음과 같이 질의하여 사용 가능한 최소 LSN을 찾을 수 있습니다.
SELECT min([tran_begin_lsn]) FROM [cdc].[lsn_time_mapping] with (nolock) where tran_id <> 0x00
다음 예에서는 Db2 z/OS에 대한 LSN 값의 사용을 보여줍니다.
예제 1:
ADD EXTRACT extn TRANLOG, LSN 0xDEE40E4F27A3245400
예제 2:
ADD EXTRACT extn TRANLOG, LSN 22216433159121980904448
다음 예에서는 SQL Server에 대한 LSN 값을 보여줍니다.
ADD EXTRACT extn TRANLOG, LSN 0X00000d7e:0000036b:0001
LRI value
Db2 LUW의 경우 적합합니다. Extract 시작 시 트랜잭션 로그에서 시작점을 지정합니다.
Db2 LUW 시스템에 대해 LRI 옵션을 사용하여 추출이 트랜잭션 로그에서 레코드 캡처를 시작할 수 있는 LRI를 지정할 수 없습니다. Db2 유틸리티 db2logsForRfwd를 사용하여 LRI를 얻을 수 있습니다. 이 유틸리티는 Db2 로그에 있는 LRI 범위를 제공합니다.
Extract가 제공된 LRI에 배치될 수 있지만 LRI는 Extract가 처리할 첫번째 항목이 아닐 수도 있습니다. 로그 파일의 다양한 레코드 유형(예: Db2 내부 로그 레코드)이 Extract에서 무시됩니다. Extract는 실제 시작 LRI를 Extract 보고서 파일에 보고합니다.
LOGNUM lognum
MySQL의 경우 적합합니다.
로그 파일 번호입니다. LOGNUM 값에 값을 선행하는 0이 포함되는 경우 ADD EXTRACT가 실패합니다. 예를 들어, ADD EXTRACT ext1, TRANLOG, LOGNUM 000001, LOGPOS 0은 실패합니다. 대신, 이 예에서 성공하려면 LOGNUM을 1로 설정하십시오.
LOGPOS logpos
이는 특정 트랜잭션 레코드를 식별하는 로그 파일 내 이벤트 오프셋 값입니다. 이벤트 오프셋 값은 로그 레코드의 헤더 섹션에 저장됩니다. binlog 파일의 시작 부분에 배치하려면 LOGPOS를 0로 설정합니다.
SEQNO sequence_number
Db2 for i의 경우 적합합니다. 최대 20자리 길이의 10진수인 시스템 시퀀스 번호 또는 바로 뒤에서 캡처를 시작합니다.
SCN value
Oracle의 경우 적합합니다.
지정된 Oracle SCN(시스템 변경 번호)이 있는 리두 로그의 트랜잭션에서 Extract를 시작합니다. 통합 모드의 Extract의 경우 SCN 값은 Extract가 데이터베이스에 등록된 SCN보다 커야 합니다. 자세한 내용은 REGISTER EXTRACT을 참조하십시오.
PARAMS file_name
Oracle GoldenGate 디렉토리 내 기본 위치인 dirprm 이외의 다른 위치에서 Extract 매개변수 파일의 전체 경로 이름을 지정합니다.
REPORT file_name
Oracle GoldenGate 디렉토리 내 기본 위치인 dirrpt 이외의 다른 위치에서 Extract 보고서 파일의 전체 경로 이름을 지정합니다.
DESC ‘description’
그룹에 대한 설명(예: 'Extracts account_tab on Serv1')을 지정합니다. 설명을 작은 따옴표로 묶습니다.
ENCRYPTIONPROFILE
특정 클라이언트와 연관된 Oracle GoldenGate 암호화 프로파일의 이름을 지정합니다.
GTIDSET gtidset
MySQL의 경우 적합합니다.
MySQL의 GTID 기반 캡처를 위한 GTID 집합으로 위치 유형을 사용하여 Extract의 초기 배치를 지정합니다. GTID에 대해 지원되는 MySQL 소스는 MySQL Server 8.0 이상입니다. 최대 지원되는 GTID 집합 크기는 64KB입니다.
구문:
ADD EXTRACT extract_name, TRANLOG, GTIDSET gtidset
CRITICAL
프로세스가 배치에 중요한지 나타냅니다.
PROFILE
자동 시작 프로파일의 이름입니다.
AUTOSTART
관리 서비스가 시작될 때 자동으로 관리되는 프로세스가 시작되도록 할지 여부를 지정합니다. 기본값은 YES입니다.
DELAY
프로세스를 시작하기 전 대기 시간(초)입니다.
AUTORESTART
프로세스가 종료된 경우 재시작 방법을 제어합니다.
RETRIES
재시도 작업을 취소하기 전 작업을 재시작할 최대 시도 횟수입니다. 이 속성은 선택사항입니다.
WAITSECONDS
재시작이 계산되는 기간(초)입니다.
RESETSECONDS
재시도가 계산되는 기간을 재설정합니다.
DISABLEONFAILURE
TRUE로 설정할 경우 재시도 횟수가 모두 사용되면 작업이 사용 안함으로 설정됩니다.
SOCKSPROXY {host_name |
IP_address}[:port] [PROXYCSALIAS credential_store_alias [PROXYCSDOMAIN credential_store_domain] |
별칭 Extract에 사용합니다. 프록시 서버의 DNS 호스트 이름 또는 IP 주소를 지정합니다. DNS 서버에 연결할 수 없을 경우 IP 주소를 사용해야 하지만 호스트를 정의하는 데는 둘 중 하나를 사용할 수 있습니다. IP 주소를 사용 중인 경우 대상 시스템의 스택에 따라 IPv6 또는 IPv4 매핑된 주소를 사용합니다. PROXYCSALIAS를 지정해야 합니다. 또한 사용할 포트와 인증서 저장소 도메인을 지정할 수 있습니다.
예제
다음 예에서는 트랜잭션 로그에서 데이터베이스 변경사항을 캡처하는 이름이 exte인 Extract 그룹을 생성합니다. 추출은 ADD EXTRACT로 Extract 그룹이 생성 및 시작될 때 생성된 레코드부터 시작합니다.
ADD EXTRACT extn, TRANLOG, BEGIN NOW
다음 예에서는 Extract를 특정 시간기록에 배치하여 트랜잭션 로그에서 데이터베이스 변경사항을 가져올 Extract 그룹 이름 extw가 생성됩니다.
ADD EXTRACT extn, TRANLOG, BEGIN NOW
REGISTER EXTRACT extn DATABASE
ALTER EXTRACT extn BEGIN 2020-08-02T06:05:30.000Z
다음은 통합 Extract 그룹을 생성합니다.
ADD EXTRACT extn, INTEGRATED TRANLOG, BEGIN NOW
다음은 이름이 extei인 초기 로드 Extract를 생성합니다.
ADD EXTRACT extn, SOURCEISTABLE
다음 예에는 적합한 형식의 GTID 집합 조합이 모두 포함됩니다.
예제 1:
ADD EXTRACT exte, TRANLOG, GTIDSET "E11FA47-71CA-11E1-9E33-C80AA9429562:4"
예제 2:
ADD EXTRACT exts, TRANLOG, GTIDSET "3E11FA47-71CA-11E1-9E33-C80AA9429562:1-10"
예제 3:
ADD EXTRACT extn, TRANLOG, GTIDSET "3E11FA47-71CA-11E1-9E33-C80AA9429562:1-3:11:47-49"
예제 4:
ADD EXTRACT extw, TRANLOG, GTIDSET "2174B383-5441-11E8-B90A-C80AA9429562:1-3,24DA167-0C0C-11E8-8442-00059A3C7B00:1-19"
주: 예 4와 같이 GTID 세트에 REST API 요청을 형성하기 위해 다중 UUID가 포함된 경우 이 GTID 세트는 쉼표 구분 기호를 사용하여 다중 GTID 세트로 나뉩니다.
다음 예에서는 리두 로그의 특정 Oracle SCN(시스템 변경 번호)에서 Extract를 생성 및 배치합니다.
ADD EXTRACT extn TRANLOG SCN 123456
ADD EXTRACT extn INTEGRATED TRANLOG SCN 123456
다음 예에서는 Db2 LUW 시스템에서 Extract를 생성합니다.
ADD EXTRACT extn, TRANLOG LRI 8066.322711
다음 예에서는 관리 클라이언트를 사용하여 자동 시작 옵션으로 Extract를 생성합니다.
ADD EXTRACT extn, TRANLOG , BEGIN NOW , AUTOSTART yes