Oracle GoldenGate Guide 2 - Oracle to Oracle 단방향 동기화

View Comments


Oracle
 to Oracle 단방향 동기화



OGG_Guide_v0.2.docx



# 본 가이드는 실습 위주로 작성되었으며 좀더 자세한 내용은 첨부된 문서파일에 있습니다.



서로 다른 Layout을 가진 Table의 동기화

@ 두 table의 DDL 동기화





목  차

1. Different Layout DML Synchronization

1-1. Environment

1-2. Preparation. 6

1-2-1. Installation. 6

1-2-2. Configuration. 6

1-2-3 Source System.. 6

1-2-4 Target System.. 7

1-3. Change Data Capture 8

1-3-1 Change Capture 구성... 8

1-3-2. Change Delivery 구성... 10

1-4. Generate Activity and Verify Results 12

1-4-1. Generate Database Operation. 12

1-4-2. Verify change capture and delivery. 12

2. DDL Synchronization.. 13

2-1. Environment 13

2-1-1. Architecture. 13

2-1-2. 지원 범위... 13

2-2. Preparation. 14

2-2-1. Installation. 15

2-2-2. DDL Objects Install 15

2-3. DDL Capture 16

2-3-1. Extract 16

2-3-2. Replicat 17

2-3-3. Result 17








 1. Different Layout DML Synchronization

 

1-1. Environment

* 환경과 Architecture는 첨부된 manual에 기술되어 있음

1-2. Preparation

 

1-2-1. Installation

 

Ø  Environment

  - 테스트를 위해 두 개의 Oracle DB instance로 실습환경을 구성하였다.

 

구분

Hostname

OS Version

OS Account

DB SID

DB Version

DB Schema

Source

mwtech

GNU / LINUX

lovelybin

orcl

Oracle v11.2

mw_addr

Target

mwtech

GNU / LINUX

lovelybin

ortest

Oracle v11.2

mw_addr

 

Ø  Install

 - ggs ggt에 각각 GG의 압축을 풀어 설치한다.

 - Source system target system 모두 하위 디렉토리를 생성한다.

 

Shell> ./ggsci

GGSCI> CREATE SUBDIRS

 

1-2-2. Configuration

 - DML에 의해 변경된 데이터의 동기화를 위한 로그파일의 활성화

 

Supplement Log

SQL> ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;

 

Redo Log

SQL> ALTER SYSTEM SWITCH LOGFILE;

 

1-2-3 Source System

Ø  Manager process 구성

 - Source 시스템에 Manager parameter file을 만들고 사용할 포트를 설정한다

GGSCI > edit params mgr

 

--Source port 3030

 

 

 

Ø  Table 생성

 

SQL> insert into mw_addr values('책임','이원혁','726','rheesid@penta.co.kr');

SQL> insert into mw_addr values('책임','김은하','784','silver@penta.co.kr');

SQL> insert into mw_addr values('전임','전승엽','889','seraphmate@penta.co.kr');

SQL> insert into mw_addr values('전임','신희승','759','zzang10003@penta.co.kr');

 

Ø  supplemental logging 추가

 - GGSCI Source DB에 접속 후 2개의 테이블에 대한 추가 로깅 설정

 

GGSCI > add trandata lovelybin.mw_addr

 

 

1-2-4 Target System

 

Ø  Manager process 구성

GGSCI > edit params mgr

 

--Target

Port 3031

 

 

 

Ø  Table 생성

Target 시스템에 table 생성

- Target SystemSource Table과 다른 Layout으로 구성한다.

- row의 번호를 가져오는 row_id commit된 시간을 찍는 commit_ts 컬럼을 추가한다.

 

 1-3. Change Data Capture

 

1-3-1 Change Capture 구성

 - 변경된 데이터 감지를 위한 Capture Process를 구성한다

 

Ø  Extra Group 추가

 

GGSCI> ADD EXTRACT EXTCDC01, TRANLOG, BEGIN NOW, THREADS 1

 

 - Extract Group 정보 확인

 

GGSCI > info extract extcdc01

 

  - Extract Parameter 설정

 

GGSCI > edit params extcdc01

--Source System Extract

extract extcdc01

 

--Login Infomation

userid lovelybin, password ********

 

--write to trailfile

exttrail ./dirdat/01

 

BR BROFF

 

DISCARDFILE ./dirout/extcdc10.dsc, append, purge

 

--Table List

table lovelybin.mw_addr, tokens (tk_rowid = @getenv("ORARECORD","ROWID"),tk_commit_ts=@g

etenv("GGHEADER","COMMITTIMESTAMP"));

 

Ø  EXTTRAIL 정의

 - extract에서 변경될 데이터를 추출하기 위한 exttrail을 추가한다.

GGSCI > ADD EXTTRAIL ./dirdat/01, EXTRACT EXTCDC01, MEGABYTES 10

 

Ø  PUMP 추가

 - exttrail에서 변경된 데이터를 읽어오기 위한 pump를 추가한다.

GGSCI > add extract pmp01, exttrail ./dirdaat/01, begin now

 

 - pump parameter 설정

GGSCI > edit params pmp01

--Pump Parameter

extract pmp01

 

passthru

 

--remote host

rmthost 210.108.181.24, mgrport 3031

-- rmttrail ./dirdat/11

rmttrail ./dirtest/11

 

--table definition

table lovelybin.mw_addr;

 

 

 - DATA PUMP USING CASE

l  네트워크와 Target 장애에 대한 보호

l  데이터 필터링 또는 전송의 단계적 구현

l  여러 Source로부터 Target으로 데이터 통합

l  하나의 Source를 복수의 Target으로 동기화

 

Ø  RMTTRAIL 추가

 - PUMP에 있는 DATA를 가져오기 위한 RMTTRAIL을 추가한다.

GGSCI > ADD RMTTRAIL ./dirdat/11, EXTRACT PMP01

 

Ø  DEFGEN 설정

GGSCI > EDIT PARAMS DEFGEN

Defsfile ./dirdef/tbdef.def, purge

Userid lovelybin password ********

Table lovelybin.mw_addr;


1-3-2. Change Delivery 구성

 

 - 변경된 데이터를 감지하여 Target System으로 전달하기 위한 설정을 한다.

 

Ø  Checkpoint table 설정

 

 - 변경된 데이터를 어디까지 읽어 들였는지 확인하기 위하여 Checkpoint table을 설정한다.

 - Target System Checkpoint table을 추가하기 위해 GLOBAL Parameter 파일을 설정한다.

GGSCI> EDIT PARAMS ./GLOBALS

checkpointtable lovelybin.ggschkpt

 

 - Target System DB에 접속해 Replicat Checkpoint table을 생성한다.

GGSCI> DBLOGIN USERID lovelybin, PASSWORD ********

GGSCI> ADD CHECKPOINTTABLE

 

Ø  Replicat 추가

 

 - Target System Replicat Group을 추가한다.

GGSCI> ADD REPLICAT repcdc01, EXTTRAIL ./dirdat/11

 

 - Replicat Parameter 설정

 - colmap을 이용해 Target table column을 설정한다.

GGSCI> EDIT PARAMS REPCDC01

 --Target System Replicat

replicat repcdc01

 

--configuration

setenv (ORACLE_SID="ortest")

 

--Login Infomation

userid lovelybin, password ********

 

sourcedefs ./dirdef/tbdef.def

 

discardfile ./dirrpt/repcdc01.dsc, append, purge

 

map lovelybin.mw_addr, target lovelybin.mw_addr, colmap (usedefaults, row_id = @token("t

k_rowid"), commit_ts=@token("tk_commit_ts")), keycols (row_id);

 

 


 

1-4. Generate Activity and Verify Results

 

1-4-1. Generate Database Operation

 

Ø  Execute DML

 - Source System DB에 접속해서 다음과 같이 DATA를 추가한다.

SQL > insert into mw_addr values(‘전임’,’심은영’,’758’,’eyshim@penta.co.kr’);

  

1-4-2. Verify change capture and delivery

 

Ø  Result

 - Target Table에 추가된 row_id commit_ts의 값을 활인할 수 있다.

SQL > select * from mw_addr;








2. DDL Synchronization

 

2-1. Environment

 

2-1-1. Architecture

 

위 그림은 Source 오라클 데이터베이스에서 시스템 이벤트 로그에 의해 트리거 된 DDL의 변경 캡쳐를 나타낸다. DDL Operation들은 Target 오라클 데이터베이스로 복제된다.

  

2-1-2. 지원 범위

 

Ø  Supported Oracle objects and operations for DDL replication

GoldenGate Oracle 9i 이후 버전에 대하여 DDL을 지원한다. 그 이전 버전에서는 DDL이 지원되지 않는다. 아래의 objects에 대해서 2 MB 이내의 모든 DDL operation을 지원한다.

*clusters

tables

*triggers

functions

tablespaces

types

indexes

roles

views

packages

sequences

materialized views

procedure

synonyms

users

 

Ø  Non-supported Oracle objects and operations for DDL replication

 - Oracle-reserved schemas

아래의 schema name들은 Oracle 소유의 schema들이기 때문에, 반드시 GoldenGateDDL 설정에서 제외되어야 한다. GoldenGate는 이 schema들에 대한 DDL은 무시한다.

Schema Name

Schema Name

ANONYMOUS

AURORA

$JIS

$UTILITY

$AURORA

$ORB

$UNAUTHENTICATED

CTXSYS

DBSNMP

DMSYS

DSSYS

EXFSYS

MDSYS

ODM

ODM_MTR

OLAPSYS

ORDPLUGINS

ORDSYS

OSE$HTTP$ADMIN

OUTLN

PERFSTAT

PUBLIC

REPADMIN

SYS

SYSMAN

SYSTEM

TRACESVR

WKPROXY

WKSYS

WMSYS

XDB

 

Ø  Oracle Recycle bin

DDL replication을 수행하기 위해서는 반드시 Oracle recycle binOFF로 설정되어야 한다. Recycle bin이 활성화되어 있을 경우, GoldenGate DDL tigger session이 내포된 recycle bin에 의해 tigger 실패를 야기할 수 있는 DDL operation를 받을 수 있게 된다.

 

 

2-2. Preparation

 

2-2-1. Installation

 

Ø  Environment

  - 테스트를 위해 두 개의 Oracle DB instance로 실습환경을 구성하였다.

 

구분

Hostname

OS Version

OS Account

DB SID

DB Version

DB Schema

Source

mwtech

GNU / LINUX

lovelybin

orcl

Oracle v11.2

mw_team

Target

mwtech

GNU / LINUX

lovelybin

ortest

Oracle v11.2

mw_team

 

 - 이번 실습은 동일한 Layout을 가진 table을 대상으로 하였다.

 

Ø  Install

 - ggs ggt에 각각 GG의 압축을 풀어 설치한다.

 - Source system target system 모두 하위 디렉토리를 생성한다.

 

Shell> ./ggsci

GGSCI> CREATE SUBDIRS

 

2-2-2. DDL Objects Install

OGG DDL SUPPORT DDL OPERATION TRACKING하는 데이터베이스 오브젝트의 설치를 필요로 하는데, 이것은 TRIGGER MARKER, HISTORY TABLE, USER ROLE 등 여러 가지 다른 오브젝트들을 포함하기 위해서이다. DDL OPERATION TRIGGER ACTIVATE 시키고, MARKER HISTORY TABLE에 정보를 쓰게 되고, 다른 오브젝트들은 상태를 확인하고 TRACING을 할 수 있도록 하거나 성능을 향상시킨다.

 

A.     수행 중인 extract replicat를 모두 정지한다

GGSCI > info all

GGSCI > stop *

 

B.     DDL Object를 위한 스크립트의 실행

SQL > @marker_setup

SQL > @ddl_setup

SQL > @role_setup

SQL > @ddl_enable    (DDL trigger 실행)

*note : step을 따라하는 중에 OGG Schema를 입력하라고 나오면, 앞에서 입력한 <owner/schema>를 입력한다.

 

C.     GLOBAL file의 설정

GGSCI > edit params ./GLOBALS

--GoldenGate GLOBALS parameter file

 

GGSCHEMA lovelybin;

GGSCI > stop mgr

GGSCI > quit

Sh > ./ggsci

GGSCI > start mgr

 

D.     Recyclebin 설정

Recyclebin의 상태를 확인하고 반드시 ‘OFF’로 설정한다.

SQL > show parameter recyclebin

SQL > alter system set recyclebin = off scope=spfile;

 

E.      Schema Owner에 권한 설정

SQL > grant GGS_GGSUSER__ROLE, RESOUCE, DBA to lovelybin;

 

 

2-3. DDL Capture

 

2-3-1. Extract

 

A.     Supplemental logging 설정과 extract 추가

GGSCI > dblogin userid lovelybin, password ********

GGSCI > add trandata lovelybin.mw_team

GGSCI > add extract ext02, tranlog, begin now

GGSCI > add rmttrail ./dirdat/rt, extract ext02

 

B.     Parameter 설정

GGSCI > edit params ext02

extract ext02

userid lovelybin, password ********

rmthost 210.108.181.24, mgrport 3031

rmttrail ./dirdat/rt

 

DDL INCLUDE MAPPED

DDLOPTIONS ADDTRANDATA, REPORT

 

table lovelybin.mw_team;

 

C.     Extract 실행

GGSCI > start ext02

GGSCI > info ext02

 

 

2-3-2. Replicat

 

A.     Replicat 생성

GGSCI > add replicat rep02, exttrail ./dirdat/rt, checkpointtable lovelybin.ggcpt

GGSCI > info rep02

 

B.     Parameter 설정

GGSCI > edit params rep02

replicat rep02

SETENV (ORACLE_SID="ortest")

 

userid lovelybin, password ********

 

assumetargetdefs

discardfile ./dirrpt/rep02.dsc, purge

 

DDL INCLUDE MAPPED

DDLOPTIONS REPORT

DDLERROR DEFAULT ABEND

 

map lovelybin.mw_team, target lovelybin.mw_team;

 

C.     Replicat 실행

 

GGSCI > start rep02

GGSCI > info rep02

 

 

2-3-3. Result

 

A.     Mw_team table age 라는 column을 추가한다.

SQL > alter table mw_team add ( age varchar2(10) );

 

B.     Source system에 추가된 column의 모습

 




C.     Target system에도 동일하게 반영된 모습을 확인할 수 있다.

 

 





# 본 가이드는 실습 위주로 작성되었으며 좀더 자세한 내용은 첨부된 문서파일에 있습니다.




Comments (+add yours?)

Tracbacks (+view to the desc.)