본문 바로가기

Oracle GoldenGate2

ORACLE GoldenGate 11g on TDE Tablespace v1.0

ORACLE GoldenGate 11g on TDE Tablespace v1.0

 

 

1.    ORACLE, OGG and TDE

 

ORACLE 11g R2 이상

OGG 11.2 이상

 

 

2.    Installation outline

 

TDE 사용을 위한 WALLET, MASTER KEY 생성 부분은 생략한다.

 

여기서는 이후 TDE Tablespace 생성부터 OGG Replicat 구성까지를 포함한다.

 

흐름을 간략히 이야기 하면 기존 OGG 설치구성과 차별되는 점은 다음과 같다.

 

l  ENCRYPTED TABLE 추출을 위한 추가작업
(
스크립트 수행 및 OGG 계정에 권한 할당)

l  DECRYPT 하기 위한 셋팅 ( EXTRACT  )
(OGG EXTRACT 
파라미터 셋팅)

 

 

3.    Environment on ORACLE

CREATE TABLESPACE TSD_TDETBS DATAFILE '+DATA' SIZE 30G

ENCRYPTION USING 'AES256' DEFAULT STORAGE (ENCRYPT);

 

SELECT * FROM V$ENCRYPTED_TABLESPACES;

 

       TS# ENCRYPTIONALG         ENCRYPTED ENCRYTPEDKEY                                                     MASTERKEYID                      BLOCKS_ENCRYPTED BLOCKS_DECRYPTED

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

         8 AES256                YES       AF7DE90167B682A7080EB2B3E96099C771BF0DA1A3CF06D8DAFC87DA8AB2AC60 5F7FD828C4914F85BF39368D50609AB1         2942355            57958

 

                

SELECT * FROM V$TABLESPACE WHERE TS# = 8;

 

       TS# NAME                                                                                       INCLUDED_ BIGFILE   FLASHBACK ENCRYPT_I

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

         8 TSD_TDETBS                                                                                 YES       NO        YES

 

번 테이블 스페이스 TSD_TDETBS 가 암호화 되어 있다.

 

TSD_TDETBS Tablespace 에는 system.test 테이블이 있고 다음과 같은 구조를 가진다.

 

CREATE TABLE SYSTEM.TEST (

ID NUMBER,

EMAIL VARCHAR2(15),

ADDR VARCHAR2(25),

TLPN VARCHAR2(13)

);

 

CREATE UNIQUE INDEX SYSTEM.PK_TEST ON SYSTEM.TEST(ID);

 

ALTER TABLE SYSTEM.TEST ADD CONSTRAINT PK_TEST PRIMARY KEY (ID);

 

동기화 테스트를 위해 SYSTEM.TEST  5초 간격으로 INSERT 가 일어난다.

(초기 데이터 있는 상태임)

 

 

INTERVAL             WHAT

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

SYSDATE + 5/24/60/60 INSERT INTO SYSTEM.TEST SELECT (SELECT MAX(ID) FROM SYSTEM.T

                     EST) + 1, EMAIL, ADDR, TLPN FROM SYSTEM.TEST WHERE ROWNUM <

                     2; COMMIT;

 

 

4.    OGG Installation

 

OGG Version  11.2.1.0.25 를 사용하였다.

Binary 파일에 대한 압축 해제 및 오라클 프로파일 셋팅은 생략한다.

 

 

MGR, 및 기타셋팅

 

GGSCI > view param mgr

 

port 7809

PURGEOLDEXTRACTS ./dirdat/*, USECHECKPOINTS, MINKEEPhours 10

 

DOWNCRITICAL

DOWNREPORTMINUTES 30    

 

LAGREPORTMINUTES 5

LAGINFOMINUTES 10

LAGCRITICALMINUTES 60   

SYSLOG NONE

 

GGSCI > view param ./GLOBALS

 

GGSCHEMA ggsc;

 

 

DECRYPTPASSWORD 생성

 

GGSCI > ENCRYPT PASSWORD (마스터키 생성시 사용했던 패스워드) BLOWFISH ENCRYPTKEY DEFAULT

 

Using default key...

 

Encrypted password:  AACAAAAAAAAAAAOAMFAJNEIFQHDIYDXARGEHEGNBLIMCNBNG

Algorithm used:  BLOWFISH

 

암호화 된 password  Extractor 의 “DBOPTIONS DECRYPTPASSWORD” 로 사용한다.

 

 

Encrypted 테이블 데이터 추출을 위한 추가셋팅

 

--  OGG 홈 디렉토리에서

 

@prvtclkm.plb

 

grant execute on dbms_internal_clkm to ggsc;

 

 

Extract, Pump 셋팅

 

GGSCI > view param 01_ext

 

extract 01_ext

userid ggsc, password *******

 

DBOPTIONS DECRYPTPASSWORD AACAAAAAAAAAAAOAMFAJNEIFQHDIYDXARGEHEGNBLIMCNBNG encryptkey default

 

exttrail ./dirdat/s1

EOFDELAYCSECS 30

FLUSHCSECS 30

FETCHOPTIONS NOUSESNAPSHOT

REPORTCOUNT EVERY 10 MINUTES, RATE

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

 

TRANLOGOPTIONS BUFSIZE 4194304

TRANLOGOPTIONS DBLOGREADER

TRANLOGOPTIONS DBLOGREADERBUFSIZE 4194304

 

DDL INCLUDE MAPPED, OBJTYPE 'TABLE'

DDLOPTIONS REPORT

TRANLOGOPTIONS RAWDEVICEOFFSET 0

TRANLOGOPTIONS LOGRETENTION DISABLED

BR BROFF

 

TABLE SYSTEM.TEST                        ;

 

 

GGSCI > view param 01_pump

 

EXTRACT 01_pump

PASSTHRU

RMTHOST ***.***.***.*** , MGRPORT 7809

report at 23:59

reportrollover at 00:00

statoptions, reportfetch, reportdetail, resetreportstats

FLUSHCSECS 30

EOFDELAYCSECS 30

RMTTRAIL ./dirdat/t1

REPORTCOUNT EVERY 10 MINUTES, RATE

 

TABLE SYSTEM.TEST;

 

 

Source 측 프로세스 추가 및 기동

 

add extract  01_ext, tranlog, THREADS 2, begin now

add exttrail ./dirdat/s1, extract 01_ext, megabytes 100

 

add ext 01_pump, exttrailsource ./dirdat/s1, begin now

add rmttrail ./dirdat/t1, ext 01_pump, megabytes 100

 

GGSCI > start 01_ext

 

GGSCI > start 01_pump

 

 

Target  Replicat 셋팅

 

REPLICAT 01_rep

USERID ggt, PASSWORD *******

DISCARDFILE ./dirrpt/01_rep.dsc, append, megabytes 500

DISCARDROLLOVER at 00:00

report at 23:59

reportrollover at 00:00

statoptions, reportfetch, reportdetail, resetreportstats

REPORTCOUNT EVERY 10 MINUTES, RATE

ASSUMETARGETDEFS

sqlexec "alter session set recyclebin=off"

DDL INCLUDE MAPPED, OBJTYPE 'TABLE' &

EXCLUDE OPTYPE DROP &

EXCLUDE INSTRWORDS 'ALTER TABLE TRUNCATE PARTITION' &

EXCLUDE INSTRWORDS 'ALTER TABLE DROP PARTITION' &

EXCLUDE OPTYPE TRUNCATE

 

DDLERROR DEFAULT ABEND

DDLOPTIONS UPDATEMETADATA

ALLOWNOOPUPDATES

BATCHSQL BATCHESPERQUEUE 1000, BATCHTRANSOPS 10000, OPSPERBATCH 10000, OPSPERQUEUE 100000

MAXTRANSOPS 10000

GROUPTRANSOPS 10000

reperror 1403, discard

reperror 1, discard

reperror 600, discard

 

MAP SYSTEM.TEST, TARGET SYSTEM.TEST;

 

 

Target 측 프로세스 추가 및 기동

 

add replicat  01_rep, exttrail ./dirdat/t1, begin now, checkpointtable ggsc.ggschkpt

 

GGSCI > 01_rep

 

 

5.    Encrypted Data

 

TDE 는 물리적 저장공간에 데이터가 암호화 되어 저장되어 있다.

반대로 메모리에 적재 된 데이터는 복호화 된 상태로 이는 데이터 파일에 내려 쓰여지기 전까지 암호화 하지 않는다.

 

OGG 에 의해 추출 된 데이터는 Trail file 로 내려 쓰여지는데이는 암호화 되어 있지 않다.

 

Logdump 4 >n

___________________________________________________________________

Hdr-Ind    :     E  (x45)     Partition  :     .  (x04) 

UndoFlag   :     .  (x00)     BeforeAfter:     A  (x41) 

RecLength  :    93  (x005d)   IO Time    : 2015/04/16 13:55:26.965.563  

IOType     :     5  (x05)     OrigNode   :   255  (xff)

TransInd   :     .  (x03)     FormatType :     R  (x52)

SyskeyLen  :     0  (x00)     Incomplete :     .  (x00)

AuditRBA   :        546       AuditPos   : 697703032

Continued  :     N  (x00)     RecCount   :     1  (x01)

 

2015/04/16 13:55:26.965.563 Insert               Len    93 RBA 1045

Name: SYSTEM.TEST

After  Image:                                             Partition 4   G  s  

 0000 000c 0000 0008 3530 3536 3830 3432 0001 0013 | ........50568042.... 

 0000 000f 6c64 6474 6140 667a 6f69 732e 636f 6d00 | ....lddta@fzois.com. 

 0200 1d00 0000 1977 7769 7465 6574 7570 6368 7462 | .......wwiteetupchtb 

 6974 7067 7465 796a 6e66 7670 0003 0011 0000 000d | itpgteyjnfvp........ 

 3031 302d 3438 3535 2d31 3634 38                  | 010-4855-****

전부 더미 데이터 이지만 실제 번호가 있는 경우를 고려해 끝의 4자리는 * 처리 하였음

 

Trail file 의 암호화는 OGG 기능을 사용하여 적용 가능하며이 문서에서는 다루지 않았다.

 

 

6.    Conclusion

 

OGG with TDE 는 복호화 부분을 위해 키 셋팅이 필요하다.

 

Trail file 은 암호화 되어 있지 않으며결과적으로 TDE 사용으로 영향 받는 부분은 소스의 Extract 뿐이다.

Target 측은 TDE 사용이 필요 없다.