초기 로드 추출을 사용하여 Oracle에 대한 정확한 인스턴스화

관리 클라이언트를 사용하여 초기 로드 추출을 추가하는 방법에 대해 알아봅니다.

초기 로드 방식은 다음 시나리오에서 Instantiation에 매우 적합합니다.

초기 로드 Extract는 소스 테이블에서 직접 데이터를 읽고 EXTFILE에 쓰는 방식으로 작동합니다. SQL*Plus는 데이터베이스에 직접 연결하여 변경 사항을 패치(fetch)합니다. 다음 다이어그램에 표시된 것처럼 초기 로드 인스턴스화를 수행할 때는 두 단계가 있습니다. EXTINIT Extract는 초기 로드 Extract이며 EXTPRM은 기본 Extract입니다. EXTPRM 프로세스가 설정되었지만 연속 복제에 대해 시작되지 않았습니다. 초기 로드 Extract가 인스턴스화를 완료한 후 초기 로드가 시작된 시점부터 연속 복제 프로세스가 시작됩니다.

다음은 gwuad_dt_026_file-replicat.png에 대한 설명입니다.

이 Extract를 구성하려면 파일 기반 초기 로드 및 변경 데이터 캡처(CDC) 프로세스의 조합이 필요합니다. 초기 로드 Extract를 사용하는 인스턴스화 프로세스에는 다음 작업이 포함됩니다.

파일 기반 초기 로드 프로세스는 MA에서 데이터 복제를 수행하는 데 선호되는 방법입니다. 주요 구성요소는 다음과 같습니다.

시작하기 전에 데이터베이스 인증서 별칭(USERIDALIAS)이 생성되었는지 확인하십시오.

Oracle GoldenGate 웹 인터페이스, 관리 클라이언트 또는 cURL 명령을 사용하여 이 구성을 설정할 수 있습니다.

단계 1: 기본 추출 생성

정확한 인스턴스화는 소스에서 대상 데이터베이스로 데이터베이스 리소스를 올바르게 복제하는 데 사용됩니다. 기본 추출이 먼저 시작되어 변경 데이터 수집을 조기에 시작합니다. 정확한 인스턴스화는 다음과 같은 가정을 기반으로 합니다.

주: 정확한 인스턴스화가 작동하려면 등록 SCN 후에 Instantiation SCN이 와야 합니다.

다음 예에 표시된 것처럼 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