초기 로드 추출을 사용하여 Oracle에 대한 정확한 인스턴스화
관리 클라이언트를 사용하여 초기 로드 추출을 추가하는 방법에 대해 알아봅니다.
초기 로드 방식은 다음 시나리오에서 Instantiation에 매우 적합합니다.
-
원본 데이터베이스의 부분 집합에서 작은 테이블 집합으로 Target Database를 로드합니다.
-
이기종 환경에서 데이터 로드
초기 로드 Extract는 소스 테이블에서 직접 데이터를 읽고 EXTFILE에 쓰는 방식으로 작동합니다. SQL*Plus는 데이터베이스에 직접 연결하여 변경 사항을 패치(fetch)합니다. 다음 다이어그램에 표시된 것처럼 초기 로드 인스턴스화를 수행할 때는 두 단계가 있습니다. EXTINIT Extract는 초기 로드 Extract이며 EXTPRM은 기본 Extract입니다. EXTPRM 프로세스가 설정되었지만 연속 복제에 대해 시작되지 않았습니다. 초기 로드 Extract가 인스턴스화를 완료한 후 초기 로드가 시작된 시점부터 연속 복제 프로세스가 시작됩니다.

이 Extract를 구성하려면 파일 기반 초기 로드 및 변경 데이터 캡처(CDC) 프로세스의 조합이 필요합니다. 초기 로드 Extract를 사용하는 인스턴스화 프로세스에는 다음 작업이 포함됩니다.
-
초기 로드 추출 추가 및 구성: 이 추출은 소스에서 대상 데이터베이스로 하나 이상의 테이블의 기존 콘텐츠를 복사하는 데 사용됩니다.
-
변경 데이터 캡처 구성: 소스에서 대상 데이터베이스로 트랜잭션 변경 사항을 복사하는 데 사용됩니다. 주: 마이크로서비스 아키텍처는 Oracle GoldenGate 직접 로드를 통한 데이터 로드를 지원하지 않습니다.
파일 기반 초기 로드 프로세스는 MA에서 데이터 복제를 수행하는 데 선호되는 방법입니다. 주요 구성요소는 다음과 같습니다.
-
초기 로드 추출 및 복제: 데이터베이스 테이블의 기존 컨텐트를 복제합니다.
-
기본 Extract 및 Replicat: 데이터베이스 테이블에서 변경 데이터를 복제합니다.
-
배포 경로: 추적 파일을 대상 시스템으로 전송합니다.
시작하기 전에 데이터베이스 인증서 별칭(USERIDALIAS)이 생성되었는지 확인하십시오.
Oracle GoldenGate 웹 인터페이스, 관리 클라이언트 또는 cURL 명령을 사용하여 이 구성을 설정할 수 있습니다.
단계 1: 기본 추출 생성
정확한 인스턴스화는 소스에서 대상 데이터베이스로 데이터베이스 리소스를 올바르게 복제하는 데 사용됩니다. 기본 추출이 먼저 시작되어 변경 데이터 수집을 조기에 시작합니다. 정확한 인스턴스화는 다음과 같은 가정을 기반으로 합니다.
주: 정확한 인스턴스화가 작동하려면 등록 SCN 후에 Instantiation SCN이 와야 합니다.
-
기본 추출이 시작되었습니다. 변경 데이터 캡처 및 등록 SCN을 알리는 역할을 담당합니다.
-
데이터베이스가 모니터됩니다. 데이터베이스는 등록 SCN 이후에 가장 오래된 미결 트랜잭션의 SCN이 올 때까지 기다립니다. Instantiation SCN입니다.
-
Instantiation SCN은 초기 로드 Extract 및 Replicat 프로세스를 생성할 때 사용됩니다.
-
인스턴스화 SCN은 초기 로드 복제가 완료된 후 기본 Replicat를 생성하는 데 사용됩니다.
-
MySQL의 경우 정확한 인스턴스화는 MySQL 소스 및 대상 데이터베이스에만 적용되며 MySQL 셸의
Dump유틸리티를 사용하여 구현됩니다.Dump유틸리티에 대한 자세한 내용은 MySQL Dump Utility를 참조하십시오.
다음 예에 표시된 것처럼 AdminClient에서 기본 Extract EXTPRIM을 시작, 생성 및 시작합니다.
명령:
OGG (not connected) 1> CONNECT https://oggdep.example.com:9100 as oggadmin password oggadmin !
출력:
Using default deployment 'OGGDEP'
명령:
OGG (https://oggdep.example.com:9100 OGGDEP) 2> DBLOGIN USERIDALIAS oggadmin
출력:
Successfully logged into database.
명령:
OGG (https://oggdep.example.com:9100 OGGDEP) 3> ADD EXTRACT extprim INTEGRATED TRANLOG BEGIN NOW
출력:
2018-03-16T13:37:07Z INFO OGG-08100 EXTRACT (Integrated) added.
명령:
OGG (https://oggdep.example.com:9100 OGGDEP as oggadmin) 4> REGISTER EXTRACT extprim DATABASE
출력:
2018-03-16T13:37:30Z INFO OGG-02003 Extract EXTPRIM successfully registered with database at SCN 1608891.
명령:
OGG (https://oggdep.example.com:9100 OGGDEP as oggadmin) 5> EDIT PARAMS extprim
명령:
OGG (https://oggdep.example.com:9100 OGGDEP as oggadmin) 6> VIEW PARAMS extprim
출력:
--
-- E X T P R I M . p r m
-- Primary Extract Parameter File
--
Extract EXTPRIM
UseridAlias oggadmin
ExtTrail AA
Table user01.*;
명령:
OGG (https://oggdep.example.com:9100 OGGDEP as oggadmin) 7> ADD EXTTRAIL aa EXTRACT extprim
출력:
2018-03-16T13:37:55Z INFO OGG-08100 EXTTRAIL added.
명령:
OGG (https://oggdep.example.com:9100 OGGDEP as oggadmin) 8> START EXTRACT extprim
출력:
2018-03-16T13:38:02Z INFO OGG-00975 EXTRACT EXTPRIM starting
2018-03-16T13:38:02Z INFO OGG-15426 EXTRACT EXTPRIM started
이 예에서 oggadmin은 데이터베이스 인증서 별칭입니다.
기본 Extract를 생성한 후 SCN 등록 번호를 검색합니다. AdminClient에서 REGISTER EXTRACT 명령을 실행합니다. 다음 예제는 SCN 값 1608891을 검색합니다.
OGG (https://oggdep.example.com:9100 OGGDEP as oggadmin) 4> REGISTER EXTRACT extprim DATABASE
출력:
2018-03-16T13:37:30Z INFO OGG-02003 Extract EXTPRIM successfully registered with database at SCN 1608891.
2단계: Instantiation SCN 확인
Oracle GoldenGate Microservices Architecture의 관리 서비스는 열린 데이터베이스 트랜잭션에 대한 정보를 검색하기 위한 엔드포인트를 제공합니다. 이 정보는 초기 로드 Extract를 인스턴스화할 때 사용할 SCN을 식별하는 데 사용할 수 있습니다.
다음 예제에서 Instantiation SCN은 이전 단계에서 식별된 1608891의 등록 SCN을 지나도 열려 있는 모든 트랜잭션에서 가장 오래된 SCN인 1609723입니다.
-- Query for active transactions
--
SELECT T.START_SCN, T.STATUS TSTATUS, T.START_DATE,
S.SID, S.SERIAL#, S.INST_ID, S.USERNAME, S.OSUSER, S.STATUS SSTATUS, S.LOGON_TIME
FROM gv$transaction T
INNER JOIN gv$session S
ON s.saddr = t.ses_addr
UNION ALL
--
-- Query for current status
--
SELECT CURRENT_SCN, 'CURRENT', CURRENT_DATE,
NULL, NULL, NULL, 'SYS', NULL, NULL, NULL
from v$database
ORDER BY 1;
이 query 결과는 Instantiation SCN을 결정하는 데 사용될 수 있습니다. 이 특정 query의 결과는 다음과 같습니다.
1538916 ACTIVE 2018-03-16 18:10:31.0 3865 9176 1 OGGADMIN oracle INACTIVE 2018-03-16 18:10:26.0 1540555 CURRENT 2018-03-16 18:21:50.0 SYS
초기 로드 Extract를 인스턴스화하는 데 사용되는 SCN은 SQL*Plus를 사용하여 얻습니다. 다음 예제에서 SQL 질의는 인스턴스화 SCN 값을 1624963로 사용합니다. 이 값은 1608891의 등록 SCN을 지나도 열려 있는 모든 트랜잭션의 가장 오래된 SCN입니다.
OGG (https://oggdep.example.com:9100 OGGDEP as oggadmin) 14> SHELL ECHO 'SELECT MIN(START_SCN) FROM gv$transaction;' | ${ORACLE_HOME}/bin/sqlplus -S / as sysdba
MIN(START_SCN)
--------------
1624963
열려 있는 트랜잭션이 없는 경우 이 SQL 질의는 빈 결과를 반환합니다. 미결 트랜잭션이 없는 상황을 고려하는 상세 질의는 다음과 같습니다.
SELECT MIN(SCN) as INSTANTIATION_SCN
FROM (SELECT MIN(START_SCN) as SCN
FROM gv$transaction
UNION ALL
SELECT CURRENT_SCN
FROM gv$database);
3단계: 초기 로드 Replicat 생성 및 시작
이 단계를 시작하기 전에 체크포인트 테이블 oggadmin.checkpoints이 대상 시스템에 존재하는지 확인하십시오. 초기 로드 Replicat는 대상 데이터베이스를 채웁니다. AdminClient에서 다음 명령을 실행하여 초기 로드 Replicat(REPINIT)를 만들고 시작합니다.
명령:
OGG (not connected) 1> CONNECT https://oggdep.example.com:9100 as oggadmin password oggadmin !
출력:
Using default deployment 'OGGDEP'
명령:
OGG (https://oggdep.example.com:9100 OGGDEP) 2> DBLOGIN USERIDALIAS oggadmin
출력:
Successfully logged into database.
명령:
OGG (https://oggdep.example.com:9100 OGGDEP as oggadmin) 3> ADD CHECKPOINTTABLE oggadmin.checkpoints
출력:
ADD "oggadmin.checkpoints" succeeded.
명령:
OGG (https://oggdep.example.com:9100 OGGDEP as oggadmin) 4> ADD REPLICAT repinit EXTTRAIL dd CHECKPOINTTABLE oggadmin.checkpoints
출력:
2018-03-16T13:56:41Z INFO OGG-08100 REPLICAT added.
명령:
OGG (https://oggdep.example.com:9100 OGGDEP as oggadmin) 5> EDIT PARAMS repinit
명령:
OGG (https://oggdep.example.com:9100 OGGDEP as oggadmin) 6> VIEW PARAMS repinit
출력:
--
-- R E P I N I T . p r m
-- File-Based Initial Load Replicat Parameter File
--
Replicat REPINIT
UseridAlias oggadmin
Map user01.*
Target user01.*;
명령:
OGG (https://oggdep.example.com:9100 OGGDEP as oggadmin) 7> START REPLICAT repinit
출력:
2018-03-16T13:58:21Z INFO OGG-00975 REPLICAT REPINIT starting
2018-03-16T13:58:21Z INFO OGG-15426 REPLICAT REPINIT started
4단계: 초기 로드 추출 생성 및 시작
검색한 Instantiation SCN(1624963)을 사용하면 데이터베이스 테이블의 내용을 Trail에 기록하기 위해 초기 로드 Extract가 생성됩니다. 초기 로드 Extract인 EXTINIT를 생성하고 시작합니다.
Oracle GoldenGate 26ai부터는 와일드카드를 포함하는 TABLE 매개변수로 테이블을 분석할 때 초기 로드 추출 테이블 뷰에 대해 분석되지 않습니다. 초기 로드 Extract에 뷰를 포함해야 하는 경우 와일드카드 없이 별도의 TABLE 매개변수에 뷰를 지정해야 합니다.
예를 들어, hr.employees 테이블과 hr.employees_view 뷰가 있는 경우입니다. 초기 로드 Extract의 경우 초기 로드 Extract의 매개변수 파일에서 다음을 지정하는 경우:
TABLE hr.*;
테이블 hr.employees의 데이터만 초기 로드 Extract에 포함됩니다.
초기 로드에 hr.employees_view를 포함해야 하는 경우 초기 로드 Extract 매개변수 파일에 다음 매개변수를 추가합니다.
TABLE SCOTT.TAB1_VIEW;
명령:
OGG (https://oggdep.example.com:9100 OGGDEP as oggadmin) 15> ADD EXTRACT extinit SOURCEISTABLE
출력:
2018-03-16T14:08:38Z INFO OGG-08100 EXTRACT added.
명령:
OGG (https://oggdep.example.com:9100 OGGDEP as oggadmin) 16> EDIT PARAMS extinit
명령:
OGG (https://oggdep.example.com:9100 OGGDEP as oggadmin) 17> VIEW PARAMS extinit
출력:
--
-- E X T I N I T . p r m
-- File-Based Initial Load Extract Parameter File
--
Extract EXTINIT
UseridAlias oggadmin
ExtFile CC Megabytes 2000 Purge
Table user01.*, SQLPredicate "As Of SCN 1624963";
명령:
OGG (https://oggdep.example.com:9100 OGGDEP as oggadmin) 18> START EXTRACT extinit
출력:
2018-03-16T14:13:42Z INFO OGG-00975 EXTRACT EXTINIT starting
2018-03-16T14:13:42Z INFO OGG-15426 EXTRACT EXTINIT started
5단계: 배포 경로 생성
Admin Client에서 로컬 트레일을 원격 호스트로 복사하기 위한 두 개의 배포 경로(AABB 및 CCDD)를 만듭니다.
명령:
OGG (https://oggdep.example.com:9100 oggdep) 15> ADD DISTPATH aabb SOURCE TRAIL://oggdep.example.com:9102/services/v2/sources?trail=AA target wss://dallas.oggdevops.us:9103/services/v2/targets?trail=BB
출력:
2018-03-16T17:28:27Z INFO OGG-08511 The path 'AABB' has been added.
명령:
OGG (https://oggdep.oggdevops.us:9100 oggdep) 16> ADD DISTPATH ccdd SOURCE TRAIL://oggdep.example.com:9102/services/v2/sources?trail=CC target wss://dallas.oggdevops.us:9103/services/v2/targets?trail=DD
출력:
2018-03-16T17:28:35Z INFO OGG-08511 The path 'CCDD' has been added.
명령:
OGG (https://oggdep.example:9100 oggdep) 17> START DISTPATH aabb
출력:
2018-03-16T17:28:42Z INFO OGG-08513 The path 'AABB' has been started.
명령:
OGG (https://oggdep.example.com:9100 oggdep) 18> START DISTPATH ccdd
출력:
2018-03-16T17:28:47Z INFO OGG-08513 The path 'CCDD' has been started.
wss 대신 ogg 프로토콜을 사용하는 경우 TARGETTYPE 옵션을 사용해야 합니다. 이 경우 구문은 다음과 같습니다.
ADD DISTPATH path-name SOURCE source-uri TARGET target-uri [ TARGETTYPE ( MANAGER | COLLECTOR | RECVSRVR ) ]
TARGETTYPE는 배포 경로가 레거시 프로토콜을 사용하는 경우 대상 유형을 나타냅니다. 이 인수는 대상 URI 스키마가 ogg인 경우에만 적합합니다.
단계 6: 기본 Replicat 생성
초기 로드 Extract 및 Replicat가 완료되면 삭제할 수 있습니다. 그런 다음 대상 데이터베이스에 변경 데이터를 적용하기 위해 원격 호스트에 기본 Replicat 프로세스가 생성됩니다.
AdminClient를 사용하여 기본 Replicat 프로세스를 생성합니다. 주: 기본 Replicat는 인스턴스화 SCN에서 시작됩니다.
명령:
OGG (https://oggdep.example.com:9100 oggdep as oggadmin) 12> ADD REPLICAT repprim EXTTRAIL bb CHECKPOINTTABLE oggadmin.checkpoints
출력:
2018-03-16T17:37:46Z INFO OGG-08100 REPLICAT added.
명령: EDIT PARAMS
OGG (https://oggdep.example.com:9100 oggdep as oggadmin) 13> EDIT PARAMS repprim
명령:
OGG (https://oggdep.example.com:9100 oggdep as oggadmin) 14> VIEW PARAMS repprim
출력:
--
-- R E P P R I M . p r m
-- Replicat Parameter File
--
Replicat REPPRIM
USERIDALIAS oggadmin
Map user01.*
Target user01.*;
명령:
OGG (https://oggdep.example.com:9100 oggdep as oggadmin) 15> START REPLICAT repprim ATCSN 1624963
출력:
2018-03-16T17:38:10Z INFO OGG-00975 REPLICAT REPPRIM starting
2018-03-16T17:38:10Z INFO OGG-15426 REPLICAT REPPRIM started