본문 바로가기

Oracle GoldenGate2

OGG 11g for Flat File v1.0

OGG 11g for Flat File v1.0

 

Date

Ver

Etc.

13.04.12

v1.0

 

 

 

 

 

 

 

 

 

1.    OGG for Flat File

Flat File 은 다음과 같은 구분자로 나뉘어지는 정형화 된 데이터를 의미한다.

 

I|A|TEST.FOR_FLATFILE|2013-04-10:11:08:06.000000|1837|2013/04/10 11:08:06|2013-04-10:11:08:06|884

 

Flat File 의 경우 구분자로 ‘|’ 를 사용하였다.

 

GoldenGate Trail file Format 으로 Flat File (Ascii format) 을 지원한다.

여기서는 Flat File 형태의 Trail File 을 남기기 위한 내용을 다루겠다.

 

2.    Environment

ORACLE 서버를 이용하여 GoldenGate Source Target 을 구성하였다.

Source 에서 Capture Target 에 전송할 때 Ascii 형태의 Trail File 을 쌓는다.

 

Source 에는 mgr, capture, pump 를 구성하고 Target 에는 mgr 만 구성한다.

 

n  Source

--- mgr.prm

port 7801

 

--- flat.prm

extract flat

userid ogg, password ogg

 

EOFDELAYCSECS 30

FLUSHCSECS 30

FETCHOPTIONS NOUSESNAPSHOT

REPORTCOUNT EVERY 10 MINUTES, RATE

 

GETUPDATEBEFORES

NOCOMPRESSDELETES

NOCOMPRESSUPDATES

 

report at 23:59

reportrollover at 00:00

statoptions, reportfetch, reportdetail, resetreportstats

sqlexec "alter session set recyclebin=off"

THREADOPTIONS MAXCOMMITPROPAGATIONDELAY 60000 IOLATENCY 60000

--TRANLOGOPTIONS EXCLUDEUSER GGSC, EXCLUDEUSERID 229

--DDL INCLUDE MAPPED, OBJTYPE 'TABLE'

--DDLOPTIONS REPORT

--DDLERROR _SKIPDDL 2692602

--TRANLOGOPTIONS RAWDEVICEOFFSET 0

--TRANLOGOPTIONS LOGRETENTION DISABLED

BR BROFF

 

exttrail ./dirdat/fl

 

---flatpump.prm

EXTRACT flatpump

userid ogg, password ogg

 

report at 23:59

reportrollover at 00:00

statoptions, reportfetch, reportdetail, resetreportstats

FLUSHCSECS 30

EOFDELAYCSECS 30

REPORTCOUNT EVERY 10 MINUTES, RATE

 

NOBINARYCHARS

FORMATASCII, OP, TS, NONAMES, NOQUOTE, PLACEHOLDERS, NULLISSPACE, NOTRANSTMTS, DELIMITER '|'

 

RMTHOST 172.18.174.120 , MGRPORT 7802

RMTTRAIL ./dirdat/fp

 

TABLE test.for_flatfile;

 

---add process

add ext flat, TRANLOG, BEGIN NOW

add exttrail ./dirdat/fl, extract flat, megabytes 1024

 

add extract flatpump, exttrailsource ./dirdat/fl

add rmttrail ./dirdat/fp, extract flatpump, megabytes 20

 

 

n  Target

port 7802

 

3.    Trail File

NOBINARYCHARS

FORMATASCII, OP, TS, NONAMES, NOQUOTE, PLACEHOLDERS, NULLISSPACE, NOTRANSTMTS, DELIMITER '|'

 

첫 줄은 바이너리 문자열을 NULL 로 종결되는 문자로 취급할지 여부를 컨트롤한다.

 

두 번째 줄이 핵심 내용인데, FORMATASCII ASCII 포맷 형태로 취급한다는 뜻이다. DELIMITER 는 구분자를 어떤 걸 사용할지 정한다.

 

4.    Replicat

위 구성을 통해 Target 에서는 다음과 같이 ascii format flat file 을 얻을 수 있다.

 

I|A|TEST.FOR_FLATFILE|2013-04-10:11:08:06.000000|1837|2013/04/10 11:08:06|2013-04-10:11:08:06|884

I|A|TEST.FOR_FLATFILE|2013-04-10:11:08:06.000000|1838|2013/04/10 11:08:06|2013-04-10:11:08:06|895

I|A|TEST.FOR_FLATFILE|2013-04-10:11:08:06.000000|1839|2013/04/10 11:08:06|2013-04-10:11:08:06|991

I|A|TEST.FOR_FLATFILE|2013-04-10:11:08:06.000000|1840|2013/04/10 11:08:06|2013-04-10:11:08:06|455

 

위 데이터는 Target 에 쌓인 Trail 파일의 실제 내용이다.

Flat file format 을 사용하면 실제 파일 내용을 위와같이 열람가능하다.

 

여기까지는 OGG 를 통해 쉽게 구성이 가능하다.

여기까지라 함은 데이터 적재가 필요한 타겟 (NoSQL) 의 로컬 시스템까지 트레일 파일을 쌓기까지이다.

 

쌓여진 Trail 파일을 실제 적재하는 부분부터는 ( Replicat 역할) 사용자 개발이 필요한 부분이다.

 

참고로 위 Trail File 의 내용은 아래 테이블에서 추출 된 내용이다.

 

ID DTTM                DTTM_DATE           NUM

---------- ------------------- ------------ ----------

      1840 2013/04/10 11:08:06 10-APR-13           455

      1839 2013/04/10 11:08:06 10-APR-13           991

      1838 2013/04/10 11:08:06 10-APR-13           895

      1837 2013/04/10 11:08:06 10-APR-13           884

 

 

I|A|TEST.FOR_FLATFILE|2013-04-10:11:08:06.000000|1837|2013/04/10 11:08:06|2013-04-10:11:08:06|884

I|A|TEST.FOR_FLATFILE|2013-04-10:11:08:06.000000|1838|2013/04/10 11:08:06|2013-04-10:11:08:06|895

I|A|TEST.FOR_FLATFILE|2013-04-10:11:08:06.000000|1839|2013/04/10 11:08:06|2013-04-10:11:08:06|991

I|A|TEST.FOR_FLATFILE|2013-04-10:11:08:06.000000|1840|2013/04/10 11:08:06|2013-04-10:11:08:06|455

 

 

5.    Conclusions

Flat File 의 경우 타겟에서의 적재를 위해서는 개발이 필요하다.

GoldenGate 에서 지원하는 건 Trail File 로 쌓는 과정까지이다.

 

위 구성에서는 Trail File Target 에 전송하는 걸 전제로 이야기 했다.

이때 사용하는 GoldenGate Source Target 2copy 가 된다.

 

반면 ASCII 포맷의 Trail File Source 쪽에서 생성하는 방법이 있다.

다만 이 경우에는 pump 를 통해 전송하는 것이 불가하다.

전송을 시도하면 다음과 같은 에러가 발생한다.

 

2013-04-10 10:52:25  ERROR   OGG-01028  Incompatible record (101) in ./dirdat/fl000000, rba 0 (getting header)

 

결국 Source 레벨에서 ASCII FORMAT 으로 TRAIL FILE 을 쌓는다는 건 OGG 를 통한 전송을 하지 않겠다는 이야기이다.

더불어 이 경우에는 Source 에만 OGG 를 사용하게 되는 것이다.

 

6.    References

ORACLE GoldenGate for Flat File | E17342-01