19c OGG 구성 테스트

직접 테스트 한 결과를 토대로 정리한 문서 입니다.

나중에 시간될때 OGG에 대하여 설명하는 시간 갖도록 하겠습니다.

감사합니다.


#########################################################################################



0. 사전 설정(SRC/TGT)

PROFILE에 아래 정보를 등록한다.

============================================================================

export OGG_HOME=/oracle/ogg

export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib:/usr/X11R6/lib:$OGG_HOME

============================================================================

※ aix의 경우 LD_LIBRARY_PATH대신 LIBPATH에 등록한다.


참고)MAEK-OGG 사용 할 경우 아래 PATH 정보 등록

 solaris 의 경우 profile에 path정보에 등록 /usr/xpg4/bin:



참고) OGG 버전이 DB버전 보다 낮을 경우 아래와 같은 에러 발생

./ggsci: error while loading shared libraries: libclntshcore.so.12.1: cannot open shared object file: No such file or directory


해결)

ln -s /oracle/app/oracle/product/19.0.0/dbhome_1/lib/libnnz19.so libnnz12.so

ln -s /oracle/app/oracle/product/19.0.0/dbhome_1/lib/libclntshcore.so.19.1 libclntshcore.so.12.1


-> OGG 가 DB VERSION을 지원하는 VERSION으로 설치할 것을 권장.


1. DB PARAMETER 설정(SRC/TGT)


1) alter system set enable_goldengate_replication=true;

2) alter database add supplemental log data;

3) alter database force logging;




2. 엔진설치(SRC/TGT)


1)설치 파일 다운로드

18c, 19c의 경우는 oracle.com 에서 다운로드 할 수 있다. 

12c의 경우 suport.oracle.com -> 패치 및 업데이트 -> oracle software delivery cloud에서 검색하여 다운로드


2)패치 다운로드 

support.oracle.com -> 패치 및 업데이트 ->  제품 또는 제품군(고급) 클릭 -> 패치 검색 -> 다운로드


3)rsp 수정



-oggcore.rsp

=====================================================================================================================

####################################################################

## Copyright(c) Oracle Corporation 2019. All rights reserved.     ##

##                                                                ##

## Specify values for the variables listed below to customize     ##

## your installation.                                             ##

##                                                                ##

## Each variable is associated with a comment. The comment        ##

## can help to populate the variables with the appropriate        ##

## values.                                                        ##

##                                                                ##

## IMPORTANT NOTE: This file should be secured to have read       ##

## permission only by the oracle user or an administrator who     ##

## own this installation to protect any sensitive input values.   ##

##                                                                ##

####################################################################


#-------------------------------------------------------------------------------

# Do not change the following system generated value. 

#-------------------------------------------------------------------------------

oracle.install.responseFileVersion=/oracle/install/rspfmt_ogginstall_response_schema_v19_1_0



################################################################################

##                                                                            ##

## Oracle GoldenGate installation option and details                          ##

##                                                                            ##

################################################################################


#-------------------------------------------------------------------------------

# Specify the installation option.

# Specify ORA19c for installing Oracle GoldenGate for Oracle Database 19c or

#         ORA18c for installing Oracle GoldenGate for Oracle Database 18c or

#         ORA12c for installing Oracle GoldenGate for Oracle Database 12c or

#         ORA11g for installing Oracle GoldenGate for Oracle Database 11g 

#-------------------------------------------------------------------------------

INSTALL_OPTION=ORA19c


#-------------------------------------------------------------------------------

# Specify a location to install Oracle GoldenGate

#-------------------------------------------------------------------------------

SOFTWARE_LOCATION=/oracle/ogg


#-------------------------------------------------------------------------------

# Specify true to start the manager after installation. 

#-------------------------------------------------------------------------------

START_MANAGER=


#-------------------------------------------------------------------------------

# Specify a free port within the valid range for the manager process.

# Required only if START_MANAGER is true.

#-------------------------------------------------------------------------------

MANAGER_PORT=


#-------------------------------------------------------------------------------

# Specify the location of the Oracle Database.

# Required only if START_MANAGER is true.

#-------------------------------------------------------------------------------

DATABASE_LOCATION=/oracle/app/oracle/product/19.0.0/dbhome_1



################################################################################

##                                                                            ##

## Specify details to Create inventory for Oracle installs                    ##

## Required only for the first Oracle product install on a system.            ##

##                                                                            ##

################################################################################


#-------------------------------------------------------------------------------

# Specify the location which holds the install inventory files.

# This is an optional parameter if installing on

# Windows based Operating System.

#-------------------------------------------------------------------------------

INVENTORY_LOCATION=/oracle/app/oraInventory


#-------------------------------------------------------------------------------

# Unix group to be set for the inventory directory.  

# This parameter is not applicable if installing on

# Windows based Operating System.

#-------------------------------------------------------------------------------

UNIX_GROUP_NAME=dba

=====================================================================================================================


참고)

INSTALL_OPTION -> 버전에 맞게 설정

SOFTWARE_LOCATION - > ogg가 설치될 경로

DATABASE_LOCATION -> DB 엔진이 설치된 경로

START_MANAGER -> manager 프로세서를 ogg 엔진 설치 후 자동으로 start 할 것인가에 대한 옵션. 빈칸으로 둘 경우 추후 start 시켜야 한다.

MANAGER_PORT -> 매니저 포트를 설정하는 것으로 start_manager를 true로 설정한 경우 해당 port를 지정해야 한다. default 값은 7809이다.

INVENTORY_LOCATION -> Inventory 경로

UNIX_GROUP_NAME -> 그룹명 설정


※ 설치 시 start_manager를 설정하면ogg설치 경로에 필요한 directory가 자동 생성 되지만, 따로 설정 안한 경우는 아래와 같이 CREATE SUBDIRS로 디렉토리들을 생성해야 한다.


GGSCI (sin19) 4> CREATE SUBDIRS

Creating subdirectories under current directory /oracle/ogg


Parameter file                 /oracle/ogg/dirprm: created.

Report file                    /oracle/ogg/dirrpt: created.

Checkpoint file                /oracle/ogg/dirchk: created.

Process status files           /oracle/ogg/dirpcs: created.

SQL script files               /oracle/ogg/dirsql: created.

Database definitions files     /oracle/ogg/dirdef: created.

Extract data files             /oracle/ogg/dirdat: created.

Temporary files                /oracle/ogg/dirtmp: created.

Credential store files         /oracle/ogg/dircrd: created.

Masterkey wallet files         /oracle/ogg/dirwlt: created.

Dump files                     /oracle/ogg/dirdmp: created.



3. 엔진설치(SRC/TGT)

./runInstaller -silent -waitForCompletion -responseFile /home/oracle/fbo_ggs_Linux_x64_shiphome/Disk1/response/oggcore.rsp


참고)12c이전 ogg의 경우는 silent로 깔아야 했지만 12c 이후에는 gui 환경에서 설치가 가능하다.


4. 패치 적용(SRC/TGT)

1) 사전준비

$ su - oracle

$ export ORACLE_HOME=$OGG_HOME

$ /oracle/ogg/OPatch/opatch lsinv

2) 압축 해제 및 패치 적용

$ unzip p30441544_191004_Linux-x86-64.zip

$ cd 30441544

$ /oracle/ogg/OPatch/opatch apply

3) 확인

$ /oracle/ogg/OPatch/opatch lsinv






5. ogg가 사용 할 유저 생성(SRC/TGT)


1) tablespace 생성

create tablespace gg_tbs datafile '/oradata/orgg/gg_tbs01.dbf' size 1m autoextend on next 1m maxsize unlimited;


2)권한 생성

create user ggate identified by qwerty default tablespace gg_tbs temporary tablespace temp;

alter user ggate default tablespace gg_tbs;

grant connect,resource,unlimited tablespace to ggate;

grant execute on utl_file to ggate;


3) 테스트 스키마 생성

create user hr identified by hr account unlock;

grant connect,resource,unlimited tablespace  to hr;

create user app identified by app account unlock;

grant connect,resource,unlimited tablespace  to app;




6. (옵션)ddl문을 동기화 하기 위한 스크립트 실행(SRC/TGT)

★ ddl이 필요 없다면 따로 실행 할 필요 없다.


아래 스크립트 실행한다. golden gate schema에는 앞서 생성한 ggate를 입력한다.

SQL> @$OGG_HOME/marker_setup.sql

Enter Oracle GoldenGate schema name: ggate

===============================================

@$OGG_HOME/marker_setup.sql

@$OGG_HOME/ddl_setup.sql

@$OGG_HOME/role_setup.sql

grant GGS_GGSUSER_ROLE to ggate;

@$OGG_HOME/ddl_enable.sql

===============================================



7. ogg configuration



1) EXTRACT 생성(SRC)

cd $OGG_HOME

./ggsci

GGSCI (sin19) 3> create subdirs

GGSCI (sin19) 3> add extract EXTA, tranlog, begin now    

GGSCI (sin19) 3> add exttrail ./dirdat/ea, extract EXTA

GGSCI (sin19) 3> edit params EXTA

======================================

EXTRACT EXTA

SETENV (ORACLE_SID = "orcc")

USERID ggate, PASSWORD qwerty

CACHEMGR CACHESIZE 1G, CACHEDIRECTORY ./dirtmp

TRANLOGOPTIONS EXCLUDEUSER ggate

EOFDELAYCSECS 10

FLUSHCSECS 10

NOCOMPRESSDELETES

getupdatebefores

--DDL INCLUDE ALL

DISCARDFILE ./dirout/exta.dsc, APPEND, MEGABYTES 1024

REPORT AT 00:00

REPORTROLLOVER AT 00:01

EXTTRAIL ./dirdat/ea

Table hr.*;

Table app.*;

==========================================

EXTRACT -> EXTRACT 그룹 명을 정의

SETENV -> OS 환경변수 지정

CACHEMGR CACHESIZE ,CACHEDIRECTORY  -> 커밋 되지 않은 데이터를 캐싱하기위해 사용 하는 가상 메모리 및 임시공간을 설정하는 옵션. 

TRANLOGOPTIONS EXCLUDEUSER -> 특정 유저에 대한 data 추출을 skip 하는 설정. 12c new feature

EOFDELAY second | EOFDELAYCSECS centisecond(1/100) -> Extract, data pump, replicat 이 새로운 데이터를 얼마나 자주 체크할 지 빈도를 결정. 

FLUSHCSECS -> 파라미터에 지정 된 시간이 지나거나 버퍼공간을 전부 사용, 데이터를 원격 시스템으로 보낼 때 flush 한다. 

COMPRESSDELETES | NOCOMPRESSDELETES -> extract 시 delete 정보를 기본키에서만 추출(COMPRESSDELETES) 할건지 기본키가 없을 경우 unique-key를 기본값으롷 설정(NOCOMPRESSDELETES) 할 지 여부 결정. COMPRESSDELETES가 default.

DISCARDFILE -> 처리 되지 못한 레코드를 담는 파일

REPORT -> 추출 또는 복제에 대한 통계정보를 생성하는 간격

REPORTROLLOVER -> 정기적으로 REPORT파일을 생성하는 시간 설정

EXTTRAIL -> 변경될 데이터를 추출하기 위한 extrail 경로 설정



2) datapump 설정(SRC)

add extract pa1, EXTTRAILSOURCE ./dirdat/ea, begin NOW

ADD rmttrail ./dirdat/ee, EXTRACT pa1 , megabytes 50

edit params pa1

=========================================

extract pa1

PassThru

RmtHost 192.168.56.209, MGRPORT 7811

RmtTrail ./dirdat/ee

DISCARDFILE /oracle/ogg/dirout/pa.dsc, APPEND, MEGABYTES 1000

--REPORTCOUNT EVERY 10 MINUTES, RATE

REPORT AT 00:00

--ddl include all

REPORTROLLOVER AT 00:01

Table hr.*;

Table app.*;

=========================================

PassThru -> 필터링(where절) 조건을 수행하지 않고 SRC 및 TGT 데이터 구조가 동일한 경우 사용. DEFAULT NOPASSTHRU다. 

RmtHost PORT -> 전송할 IP 와 MGR PORT를 설정

RmtTrail -> PUMP의 데이터를 가지고 오기위한 경로 설정

Table SCHEMA.* -> PUMP로 전송 할 TABLE에 대하여 설정 





3) Checkpoint table 설정 및 생성(TGT)



./ggsci

create subdirs

GGSCI (sin19in) 1> edit params ./GLOBAL


======================

GGSCHEMA ggate

CHECKPOINTTABLE ggate.checkpoint

===============================

-> 변경된 데이터를 얼마나 읽어 들였는지 확인을 위해 Checkpoint table 설정



GGSCI (sin19in) 1> dblogin userid ggate,password qwerty

GGSCI (sin19in) 1> add checkpointtable ggate.checkpoint

-> DBMS에 Checkpoint TABLE 생성


4) replicat 생성(TGT)

GGSCI (sin19in) 1> add replicat rep1, exttrail ./dirdat/ee,checkpointtable ggate.checkpoint

GGSCI (sin19in) 1> edit params rep1

==========================================

replicat rep1

ASSUMETARGETDEFS

userid ggate, password qwerty

discardfile /oracle/ogg/rep1_discard.txt, append, megabytes 10

gettruncates

ddlerror 955 ignore

ddlerror 1749 ignore

ddlerror 2303 ignore

--ddl include mapped

map hr.*, target hr.*;

map app.*, target app.*;

==========================================

ASSUMETARGETDEFS -> SRC/TGT의 TABLE이 동일한 구조일 경우 해당 파라미터 설정.

gettruncates -> truncate 명령어에 대하여 실행하는 옵션. default IGNORETRUNCATES다. 

ddlerror (code) ignore -> ddl 에러에서 특정 에러에 대하여 무시하게끔 설정하는 파라미터. 

map source table , target table -> table에 대한 맵핑정보를 설정하는 파라미터 


※아래와 같이 ddl에러가 날 경우 무시 할 수 있는 에러의 경우 ddlerror 2303 ignore 와 같이 파라미터에 설정한다.

==========================================

ddlerror

2020-02-03T11:05:02.891+0900  ERROR   OGG-00519  Oracle GoldenGate Delivery for Oracle, rep1.prm:  Fatal error executing DDL replication: error [Error code [2303], ORA-02303: /         SQL  CREATE OR REPLACE TYPE MAEK_GET_OBJ_SEG_INFO_TYPE AS object  (                                                           OWNER         VARCHAR2(100),                              SEG_NAME    VARCHAR2(100),                              OBJ_NAME    VARCHAR2(100),                              PART_NAME     VARCHAR2(100),                              SEG_TYPE    VARCHAR2(100),                              PCT_FREE    VARCHAR2(100),                              INI_TRANS    VARCHAR2(100),                              TS_NAME        VARCHAR2(100),                              COMPRESSION    VARCHAR2(100),                              SIZE_M            VARCHAR2(100),                          LAST_ANALYZED    VARCHAR2(100)                       )   /*], no error handler present.

2020-02-03T11:05:02.891+0900  INFO    OGG-02333  Oracle GoldenGate Delivery for Oracle, rep1.prm:  Reading /oracle/ogg/dirdat/ee000000, current RBA 19,976, 0 records, m_file_seqno = 0, m_file_rba = 22,105.

2020-02-03T11:05:02.891+0900  ERROR   OGG-01668  Oracle GoldenGate Delivery for Oracle, rep1.prm:  PROCESS ABENDING.

2020-02-03T10:49:34.554+0900  ERROR   OGG-00519  Oracle GoldenGate Delivery for Oracle, rep1.prm:  Fatal error executing DDL replication: error [Error code [1749], ORA-01749: you may not GRANT/REVOKE privileges to/from yourself SQL GRANT READ, WRITE ON DIRECTORY DATA_PUMP_DIR TO ggate  /* GOLDENGATE_DDL_REPLICATION */], no error handler present.

2020-02-03T10:49:34.554+0900  INFO    OGG-02333  Oracle GoldenGate Delivery for Oracle, rep1.prm:  Reading /oracle/ogg/dirdat/ee000000, current RBA 2,009, 0 records, m_file_seqno = 0, m_file_rba = 3,423.

==========================================


※ 아래 이슈 발생시

WARNING OGG-00936  Oracle GoldenGate Manager for Oracle, mgr.prm:  Access denied (request from 192.168.1.209, rule #0).

WARNING OGG-01742  Oracle GoldenGate Command Interpreter for Oracle:  Command sent to MGR MGR returned with an ERROR response.


GGSCI (sin19in) 1> edit params mgr 

==========================================

ACCESSRULE, PROG *, IPADDR *, ALLOW 

==========================================




8. OGG PROCESS START


-TGT

./ggsci

start replicat rep1


-SRC

./ggsci

start extract EXTA

start pa1



9. 참고사항. SCN 시점부터 OGG 진행을 위한 절차 요약

O) OGG 엔진 설치(SRC/TGT


1) 변경분 추출을 위한 extract start(SRC/TGT


2) SCN 확인(SRC/TGT)

select current_scn from v$database;

CURRENT_SCN

-----------

    4305273

3) SCN 기반 EXPDP 진행

expdp flashback_scn=4305273  dumpfile


4) import 하여 초기적재 진행


5) 변경분 반열을 위하여 replicat start(TGT)

start replicat rep1, aftercsn 4305273


6) 상태 확인

TAGS.

Comments