-- Source : ORACLE to Target : PostgreSQL
-- Outline
-- 1. PostgreSQL 설치
-- 2. GoldenGate 설치
-- 3. 초기적재
-- 4. 동기화
------------------------------------------------------------------
-- Goldengate for PostgreSQL 바이너리 파일을 위치 / 압축해제
------------------------------------------------------------------
------------------------------------------------------------------
-- OGG 에 접속 및 최초 디렉토리 구성
------------------------------------------------------------------
# ggsci
GGSCI > create subdirs
-- MGR 구성을 진행합니다.
GGSCI > view param mgr
port 7809
PURGEOLDEXTRACTS ./dirdat/* , USECHECKPOINTS, MINKEEPHOURS 48
DOWNREPORTMINUTES 30
LAGREPORTMINUTES 5
LAGINFOMINUTES 10
LAGCRITICALMINUTES 60
SYSLOG NONE
------------------------------------------------------------------
-- GLOBALS 구성 및 매니저 프로세스 기동
------------------------------------------------------------------
GGSCI > view param ./GLOBALS
CHECKPOINTTABLE test.GGS_CHECKPOINT
GGSCI > start mgr
-- 이 과정까지 진행되면 source 의 trail file 을 전송 받을 환경 구성이 완료 된 것입니다.
-- 실제 Source 에 pump 를 구성하여 trail file 전송이 이상없이 되는지 확인해 봅니다.
------------------------------------------------------------------
-- OGG 접속 용 PostgreSQL 계정 생성
------------------------------------------------------------------
-- PostgreSQL 에 OGG 가 접속할 수 있도록 계정을 생성합니다.
-- 원활한 진행을 위해 권한을 과도하게 주었기에, 추후 권한 축소에 대한 고민이 필요합니다.
postgresql=# create database test encoding='EUC_KR' lc_ctype='ko_KR.euckr' lc_collate='ko_KR.euckr' template='template0' ;
postgresql=# create schema test;
postgresql=# create user test superuser password 'test';
-- user 접속 권한을 통제하는 config 입니다.
-- 원활한 진행을 위해 권한을 과도하게 주었습니다.
# vi pg_hba.conf
host all all 0.0.0.0/0 trust
host all all ::1/128 trust
------------------------------------------------------------------
-- OGG 에서 PostgreSQL 에 접속이 가능한지 테스트 합니다.
------------------------------------------------------------------
-- odbc 설치
# yum install postgresql-odbc.x86_64
-- odbc 셋팅
-- user profile 에 추가
export ODBCINI=/data/ggt/dirprm/odbc.ini
-- vi odbc.ini
[ODBC Data Sources]
GG_Postgres=DataDirect 9.5.4 PostgreSQL Wire Protocol
[ODBC]
IANAAppCodePage=106
InstallDir=/data/ggt
[GG_Postgres]
Driver=/data/ggt/lib/GGpsql25.so
Description=DataDirect 9.5.4 PostgreSQL Wire Protocol
Servername=localhost
Servertype=postgres
Database=test
HostName=???.???.???.???
PortNumber=5432
LogonID=test
Password=test
# isql -v GG_Postgres test test
위 연결 성공이 선행되지 않으면 OGG 상에서 DBLOGIN 시에도 에러가 발생합니다.
GGSCI > dblogin sourcedb GG_Postgres userid test, password test
이 부분을 성공하지 못 하면 이후 replicat 구성 시 에러가 발생합니다.
------------------------------------------------------------------
-- 체크포인트 테이블을 생성합니다.
------------------------------------------------------------------
GGSCI > add checkpointtable test.GGS_CHECKPOINT
CHECKPOINTTABLE test.GGS_CHECKPOINT
------------------------------------------------------------------
-- REPLICAT 구성을 진행합니다.
------------------------------------------------------------------
GGSCI > EDIT PARAM REP_01
replicat rep_01
targetdb GG_Postgres userid test, password test
SOURCEDEFS ./dirprm/table.def
SQLEXEC "SET NAMES euckr"
discardfile ./dirout/rep_01.dsc,append
map (SCHEMA).(TABLE_NAME) , target (SCHEMA).(TABLE_NAME) ;
GGSCI > add replicat rep_01, exttrail ./dirdat/kk, extseqno 0, extrba 0
-- 초기 적재 과정은 생략합니다.
-- 주의 사항으로 초기 적재 시 INDEX 가 없으면 MAPPING ERROR 가 발생합니다.
------------------------------------------------------------------
-- 초기적재
------------------------------------------------------------------
-- 이기종 DBMS 로의 데이터 이관입니다.
-- 가장 편한 방법은 OGG 자체에서 제공하는 초기적재를 이용하는 방법입니다.
-- 해당 방법은 테이블 전체 데이터를 읽어 trail file 로 기록합니다.
-- 여기서는 상세를 언급하지 않습니다.
------------------------------------------------------------------
-- 초기적재 후 변경 분 적용
------------------------------------------------------------------
GGSCI > start rep_01
-- 초기 적재의 시점이 소스->타겟 trail 파일 전송 시점보다 느립니다. ( LONG-TX 확인 필요함 )
-- 최근의 스냅샷을 만들어놓고 이후의 변경분을 중첩 적용하는 식으로 처리합니다.
-- (pk index 가 있는 경우 사용할 수 있음)