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) 상태 확인
'기술이야기 > 전문가 기술기고' 카테고리의 다른 글
MySQL 5.5 설치 및 세팅 (0) | 2020.02.10 |
---|---|
[부하테스트] Hammer DB 참조 자료 (0) | 2020.02.10 |
Oracle DBMS SQL TOP 조회 쿼리 (0) | 2020.02.03 |
Flashback Versions Query & Transaction Query (0) | 2017.12.22 |
Oracle DB 12c R2 국산 암호화 알고리즘(ARIA, SEED) (0) | 2017.11.27 |