[DB기술노트80회] Oracle Golden Gate 12c New Feature


1.   Oracle Golden Gate 12c Release 1

 

1.1.        32K VARCHAR2

Oracle GoldenGate 12c(이하 ogg 12c) Oracle Database 12c 새로운 기능들을 반영하고 있는데 Oracle Database 12c에서 새롭게 소개 “32K VARCHAR2” capture & delivery 제공하고 있습니다.

Integrated Capture 모드와 모든 Replicat 모드에서 지원이 가능합니다.

하지만 PRIMARY KEY, UNIQUE INDEX 설정 32K VARCHAR2 복제가 불가능 합니다. (Supplemental Logging 설정이 안되기 때문임)

 

1.2.        Multitenant Container Database

Oracle 12c에서 새롭게 보인 CDB, PDB에서 복제 구성이 가능 합니다.

Capture(Integrated) Container Level 진행되기 때문에 여러 개의 PDB 존재해도 overhead 증가하지 않습니다. 설정은 root Container에서 합니다.

하나의 TRAIL file 여러 개의Delivery 프로세스에 의해 읽혀져 각각 다른 Target PDB 적용 가능하며 단일 PDB에도 적용이 가능합니다.





1.3.        Coordinated REPLICAT

coordinated mode REPLICAT 구성하면 트랜잭션 병렬 처리가 가능합니다. 일반 Classic Mode 달리 TRAIL Multi-Thread 읽어 Target Database 적용하게 됩니다. 각각의 thread에서 filtering, mapping, conversion, SQL construction 이루어지고 에러도 각각 thread 단위로 핸들링 됩니다.

Coordinator Thread 종속성을 고려하여 Thread 트랜잭션을 조정하는 역할을 담당합니다. 그리고 thread 수에 상관없이 하나의 Parameter file 제어 됩니다.

 


Target DB Database Version Integrated Mode 지원하지 않거나, Non Oracle Database 경우 해당 모드를 사용하여, 대용량 Transaction 병렬로 처리할 있는 대안으로 사용할 있습니다.

 

1.3.1.     Configuration

Syntax : ADD REPLICAT group, EXTTRAIL path, COORDINATED [MAXTHREADS number]

-       COORDINATED : coordinated mode 구성

-       MAXTHREADS : Replicat GROUP 사용할 있는 최대 thread 개수(1~500)

별도로 명시하지 않을 경우 Default 25개로 설정

 

 

1.4.        Built-in Credential Stores

OGG 내에서 계정의 password 암호 노출을 막기 위해 ‘ENCRYPT PASSWORD’ 이용하여 암호화 했습니다. 하지만 ‘ENCRYPT PASSWORD’ 사용할 마다 암호화 알고리즘과 옵션을 명시 해줘야 하는 번거로움이 있었습니다. 번거로움을 개선한 ‘CREDENTIALSTORE’ 기능이 OGG 12c 버전에서 소개되었습니다.

ID, PASSWORD 노출시키지 않고 특정 파일로 저장하여, 필요 설정된 ALIAS로만 DB 접근 있는 기능입니다.

 

1.4.1.     ADD CREDENTIALSTORE (ggsci command)

CREDENTIALSTORE 추가 하는 명령어 입니다.

기본적으로 OGG 설치 경로 아래 ‘dircrd’ CREDENTIALSTORE 파일이 저장되며 ‘GLOBALS’ parameter(CREDENTIALSTORELOCATION) 통해 경로를 선택 지정 있습니다.



 

1.4.2.     ALTER CREDENTIALSTORE ADD USER

CREDENTIALSTORE USER 추가하는 명령어 입니다.

ALTER CREDENTIALSTORE 구문의 옵션 절을 이용하여 USER 삭제, 암호 변경을 있습니다.

 


1.4.3.     INFO CREDENTIALSTORE

저장 CREDENTIALSTORE 정보를 확인하는 명령어 입니다. CREDENTIALSTORE 저장 위치와 ALIAS, USERID 정보 등을 보여줍니다.

 

 

1.4.4.     Using Alias Login

CREDENTIALSTORE 이용하여 DB 접속 정보 Alias 이용하여 비교적 쉽게 DB Attach 있습니다.

 

 


 

1.5.        ACCESSRULE

Manager 프로세스 및 하위 프로세스의 보안을 설정 할 수 있는 Manager Parameter 입니다. 하나 이상의 parameter를 설정할 수 있으며 우선 순위 제어가 가능합니다.

우선 순위가 높은 항목부터 나열하거나 ‘PRI’ 옵션을 통해서 제어 합니다.

 

예를 들어 정해진 IP Address 외에서 접근하여 프로세스들을 제어 할 수 없게 설정이 가능합니다.



-       ACCESSRULE, PROG *, IPADDR 61.250.99.134, ALLOW, IPADDR *, DENY

: IP Address 61.250.99.134 ALLOW, 나머지 IP Address 대해선 DENY

 

 


1.6.        Native DDL Replication for Oracle Database

Oracle Database에서는 DDL 복제가 가능한데, OGG 12.1.2 이전 버전에서는trigger 방식으로만 구성할 있어 절차가 상대적으로 복잡하였습니다. 하지만 OGG 12.1.2 버전에서 Integrated Mode DDL 복제 구성은 parameter 설정 만으로 구성이 가능해졌습니다.

[ Example ]

 

EXTRACT intext00

EXTTRAIL ./dirdat/intext00/ea

USERIDALIAS ogg

ddl include objname "TESTUSER".* include objname "SOE".*

 

“DDL INCLUDE” parameter 명시로 간단하게 DDL 복제 설정이 완료 됩니다. (only Integrated Mode, Classic Mode에서는 기존 trigger 방식으로 설정)

 

 

1.7.        특정 Application으로부터 Data SKIP

Extract ‘TRANLOGOPTIONS’ parameter ‘ExcludeUser’ ‘ExcludeUserID’ 옵션을 사용하여 명시적으로 data skip 있습니다.

Classic, Integrated 2개의 Mode에서 사용 가능하며, SKIP 하고자 하는 특정 Application(Batch) DB User 변경 수도 있습니다.


 

 

[ Example ]

 

EXTRACT intext00

EXTTRAIL ./dirdat/intext00/ea

USERIDALIAS ogg

EXCLUDEUSERID ogguser

EXCLUDEUSER oracle

 

‘ExcludeTAG’ 옵션은 xStream API 이용하여 특정 TAG 포함된 Transaction SKIP 합니다.

 

[ Example ]

 

dbms_streams.set_tag(“01”); -- “01” 포함 TAG SKIP

dbms_streams.set_tag(NULL); -- NULL 포함 TAG SKIP

 

 

1.8.        Integrated Delivery, Replicat (Only for Oracle)

Oracle Database 11.2.0.4 또는 12c 이후 버전에서 가능한 모드로, Oracle Database 기능을 이용하여 복제데이터를 처리 합니다. 해당 모드에서는 사용자가 REPLICAT Parameter 수정 없이 Parallel하게 데이터를 처리 있습니다. Non-Integrated 모드와 비교하여 상대적으로 대용량 트랜잭션을 빠르게 처리할 있는 장점이 있습니다.

1.8.1.     Architecture

 


 

 

Inbound Server

Receiver

LCR read

Preparer

트랜잭션들 사이의 종속성을 고려하여 그룹핑 및 정렬

Coordinator

Applier 프로세스들을 관장

Applier

트랜잭션을 적용

 

Parallel 개수는 REPLICAT 구성 지정한 수만큼 동적으로(Dynamically) 늘어나게 됩니다.

 

1.8.2.     Process

Source Database에서 capture TRAIL 읽어 LCR(Logical) 형태로 구조화하고 ‘Lightweight Streaming API’ 통하여 Database Inbound Server(Background process) attach 합니다. 이후 LCR Inbound Server 전달하고 Target Database 적용하게 됩니다.




설정 별도의 parameter 수정 없이 구성이 가능하지만, Privilege 필요합니다.

‘DBMS_GOLDENGATE_AUTH.GRANT_ADMIN_PRIVILEGE’ 이용하여 EXTRACT, REPLICAT 모두 권한을 부여합니다.

 

[ Example ]

 

Begin DBMS_GOLDENGATE_AUTH.GRANT_ADMIN_PRIVILEGE(
grantee => 'ogg',
privilege_type => ‘apply',
grant_select_privileges=> true,
do_grants => TRUE);
End;
/

 

Integrated Replicat Initial Load에서는 사용할 없고 실제 online에서 사용가능 합니다.

 

 

1.9.        EXTRACT | REPLICAT SCN Option

‘ADD EXTRACT’, ‘ALTER EXTRACT’ 구문에서 ‘SCN’ 옵션이 추가되었습니다.

‘START EXTRACT’에서도 ‘ATCSN’, ‘AFTERCSN’ 옵션이 추가되어 보다 명확하게

시작 지점을 명시 있게 되었습니다.

 

 

1.10.    REPLICAT Duplicate Transactions

START REPLICAT group_name FILTERDUPTRANSACTIONS 옵션을 통하여 이미 처리한 트랜잭션을 무시합니다. OGG 장애 처리를 위하여 EXTRACT position 지정하거나 새롭게 시작할 경우, 불가피하게 동일한 트랜잭션을 처리해야 경우가 생기는데 해당 옵션을 통하여 REPLICAT ABEND 되지 않고 지속적으로 동기화가 가능하게 되었습니다. 해당 옵션을 사용하려면 CHECKPOINT TABLE 필수로 필요 합니다. Target Oracle Database 경우 Non-Integrated Mode에서 사용 가능합니다.

 

1.11.    DEFAULT DBOPTIONS

EXTRACT, REPLICAT에서 사용되는 ‘DBOPTIONS’ 중에 명시하지 않아도 DEFAULT 적용되는 PARAMETER 내용입니다.

 

1.11.1.  ALLOWUNUSEDCOLUMN

Oracle Database Extract 유효한 parameter, TABLE UNUSED Column 존재할 경우 허용 여부를 결정합니다. ‘NOALLOWUNUSEDCOLUMN’ 설정하면 복제 대상 테이블에 UNUSED Column 존재할 경우 EXTRACT ABEND되었지만 OGG 12.1.2 부터 명시하지 않을 경우 ‘ALLOWUNUSEDCOLUMN’ 기본적으로 적용 됩니다.

 

1.11.2.  LIMITROWS

MySQL, Oracle, SQL Server, Sybase REPLICAT 유효한 parameter,

Target TABLE PK,UK 부재 동일한 SQL 문에 의해 UPDATE되거나 DELETE 되지 않도록 하는 parameter 입니다. (모든 MAP statement GLOBALLY하게 적용 )

Oracle Database 경우 ‘WHERE’ 절에서 ‘WHERE ROWNUM = 1’ 또는 ‘AND ROWNUM = 1’ 사용 됩니다.

 

1.11.3.  SUPPRESSTRIGGERS

Oracle Database(Version 11.2.0.2 이상) REPLICAT 유효한 parameter Trigger 제어 여부를 결정 합니다. 해당 parameter Trigger 시작되지 않도록 합니다.

반대로 ‘NOSUPPRESSTRIGGERS’ 명시하게 되면 trigger 시작될 있습니다.

해당 옵션절은 ‘dbms_goldengate_auth.grant_admin_privilege’ 통하여 권한이 설정 있어야 합니다.

 


 

2.            Oracle Golden Gate 12c Release 2

 

2.1.        No more SOURCEDEFS

OGG 12c Release 2 이전에는 SOURCE TARGET 간에 layout 다를 경우, 또는 이기종간에는 ‘DEFGEN’ OGG Utility 사용하여 복제 대상 metadata 생성해, ‘SOURCEDEFS’ parameter 명시해서 source target 다름을 직접 명시하여야 했습니다.

하지만 Release 2 부터는 ‘SOURCEDEFS’ parameter 명시하지 않아도, 복제 대상의 metadata TRAIL 포함되어 상이한 환경에서 복제 구성이 가능하게 되었습니다.



<DEFGEN Utility 생성한 Table Definition 파일 내용>

 

  <TRAIL 파일에 포함된 복제 대상 Metadata 내용>

 

또한 Source Target 테이블 구조가 달라도 복제가 가능합니다.

 


 

[ Example ]




이미지가 Source Table description, 아래 이미지가 Target Table description 입니다. Target Table에는 Source 다르게 ‘COL2’ column 없습니다.

 

 

Source Table에서 다음과 같은 INSERT 구문을 실행합니다.

SQL > ALTER TABLE TESTUSER.TEST02 ADD ADD_COL4 TIMESTAMP;

 

Source Target Table 구조를 확인합니다.

 




Source Target 상이한 구조임에도 추가한 ‘ADD_COL4’ COLUMN 정상적으로 복제 것을 확인 있습니다.

 

 

2.2.        Parameter Insight

Linux ‘man’ 기능과 유사한 기능으로, OGG GGSCI 커맨드 레벨에서 parameter 대한 정의, 옵션, 지원 가능한 플랫폼 등을 Database Version별로 확인 있습니다.

 

Syntax

GGSCI > INFO PARAM parameter name

 


 

[ Example ]

 

 


INFO PARAM

param name

parameter 이름

description

설명

argument

인자

default

기본값

options

옵션

component(s)

적용 가능 OGG Component

mode(s)

적용 가능 모드

platform(s)

적용 가능 플랫폼(운영체제)

versions

버전 정보

min ver

OGG 최소 필요 버전

database(s)

적용 가능 데이터베이스

status

상태

mandatory

강제 여부

dynamic

동적 적용 여부

relations

관련 parameter

 

 

2.3.        Parameter Check Utility

프로세스에 정의된 Parameter 유효성에 문제가 없는지 체크하는 유틸리티 입니다.

 

Syntax

checkprm –c <component> -m <mode> -p <platform> -d <database>

 

 


parameter file 정의된 parameter 오류가 발생하였을 경우, Component REPORT에서는 그림과 같이 간략하게만 설명이 되어있습니다.

Parameter Check Utility 자세한 내용을 확인 있습니다.

 

[ Example ]

 

1.    PASS



1 예제는 정상적으로 에러가 발생하지 않았을 경우 “Validity check : PASS” 라는 메시지가 출력된 화면입니다.

 

2.    FAIL


2 예제에서는 번째 라인에서 어떠한 사유로, 어떻게 됐다는 내용이 출력 되었습니다.

 

이와 같이 구체적이 내용을 출력할 아니라, Component 기동하지 않아도 유효성 체크를 있다는 장점이 있습니다.

 

 

2.4.        One Billion Trail files

기존에는 trail file, rmttrail 모두 6 자리의 sequenc 관리되었지만, OGG 12.2 부터는 9자리로 관리 되게 되었습니다.

GLOBALS Parameter 통해 6자리 (TRAIL_SEQLEN_6D), 9자리 모두 사용 가능 합니다.

 

[ Example ]



3.            Oracle GoldenGate 12c Release 3

 

3.1.        Microservice Architecture

 

OGG 12.3에서는Classic Architecture Microservices Architecture(MA) 2가지 Architecture 제공 합니다

MA “RESTFul” 이라는 GUI Interface 통해 ogg 핸들링 합니다.


 

해당 부분은 Oracle Database에서만 지원이 가능하며, 일반(공통) 적인 Version 제공 되고 있습니다.

 

 

OGG 다운로드 사이트에서도 Microservices Oracle Database 제공되고 있는 것을 확인 있습니다.

 

3.2.        Parallel Replicat (Only Oracle Database)

기존 Replicat 구성 방식엔 3가지 Classic, coordinated, Integrated 있습니다.

3가지 방식에는 다음과 같은 단점이 있습니다.

 

l  Classic Replicat : 확장성이 뛰어나고 간단하지만, 대용량 트랜잭션의 환경에서의 관리가 어려움

l  Coordinated Replicat : 사용하기 쉽고 관리가 쉽지만 확장(Replicat Process)하기 복잡함

l  Integrated Replicat : 대용량 트랜잭션 환경에서 성능 저하가 우려

 

Parallel Replicat 새로운 Replicat  구성 방식으로 트랜잭션을 병렬로 처리하여 보다 나은 성능을 보장합니다. Integrated Replicat 유사하게 트랜잭션 종속성을 고려하는데, 종속성 계산, 맵핑 병렬 처리 적용은 Target Database 외부에서 수행 됩니다.

트랜잭션의 무결성은 과정 유지/관리 됩니다. 그래서 대용량 트랜잭션 환경에서도 트랜잭션을 분할하여 병렬로 적용합니다.

 

 

3.3.        Procedural Replication (Only Oracle Database 12cR2 +)

DML이나 DDL 복제 없었던 특정 PL/SQL 프로시저를 복제 있도록 강화되었습니다.


실제로 패키지가 복제되지는 않지만, 해당 패키지API 동작하면서 Target System 반영 됩니다.

예를 들어 DBMS_DBFS_* 복제 되면, Target System에서 DBFS API 호출 됩니다.

 

3.4.        Automatic Conflict Detection and Resolution

Oracle Database 12cR2 이후 버전에서 OGG 양방향 복제 구성시 OGG CDR( Conflict Detection and Resolution ) 자동화 하도록 구성 관리 있습니다. 기능은 대상테이블에 INVISIBLE COLUMN(timestamp type) 생성하여 CDR 기능에 참조 합니다.

‘DBMS_GOLDENGATE_ADM’ PACKAGE ‘ADD_AUTO_CDR’ PROCEDURE 호출하여 구성되며, 테이블 단위로 설정 됩니다.

 

[ Example ]

 

BEGIN

  DBMS_GOLDENGATE_ADM.ADD_AUTO_CDR(

    schema_name => 'hr',

    table_name  => 'employees');

END;

/

 

이상으로 OGG 12c에서 지원하는 새로운 기능들에 대해 간략히 알아보았습니다


DATA기술업부  최승욱 엔지니어




#굿어스데이터 #GoodusData #DB기술노트 #Oralce #오라클 #Oracle Golden 12c new Feature


"People make a better world with Data"

[Written by GoodusData / 굿어스데이터]


이 글을 공유하기

댓글

Designed by JB FACTORY