데이터베이스 연구실.log

설치 전제조건과 초기 구성

소스와 타깃 준비, 복제 계정 및 Manager, Extract, Pump, Replicat 초기 구성과 서비스명 및 권한 쟁점

oraInst.locGRANT_ADMIN_PRIVILEGEEDIT PARAMSSTATS EXTRACTGoldenGate 19cARCHIVELOGSupplemental LoggingGGSCI

#핵심 요약

실습에서는 Oracle 19c 소스, 타깃 DB를 DBCA로 준비하고 리스너, 접속, 저장 공간을 확인함

양쪽 DB의 ARCHIVELOG, FORCE LOGGING, 최소 Supplemental Logging과 ENABLE_GOLDENGATE_REPLICATION을 확인, 설정함

복제 계정을 만든 뒤 Manager, EXT1, PMP1, REP1 순서로 구성하며 대상 테이블은 양쪽에 준비함

#개념과 동작 원리

준비 단계 환경과 권한 설정
DB 준비 파일시스템, non-CDB, AL32UTF8, 아카이브 활성화 조건으로 두 DB 생성
접속 확인 local_listener, 서비스 등록, tnsnames.ora와 tnsping, 리스너 상태 확인
소프트웨어 설치 압축 해제, oraInst.loc 준비, ORA19c 옵션의 silent 설치, START_MANAGER=false
환경변수 OGG_HOME, PATH, LD_LIBRARY_PATH에 설치 홈과 Oracle 라이브러리 반영
DB 설정 아카이브, 강제 로깅, 보충 로깅과 GoldenGate 복제 파라미터 점검
소스 계정 CREATE SESSION과 조회, LogMining, 관리 패키지 권한을 나열하며 CAPTURE 관리 권한 프로시저도 대안으로 제시
타깃 계정 DBA와 관리 패키지 권한을 나열하며 APPLY 관리 권한 프로시저도 대안으로 제시
대상 객체 SCOTT 테이블을 양쪽에 준비하고 EMP, DEPT 기본키 설정

DBCA 준비 문서 중 하나는 생성 DB명과 TNS의 SERVICE_NAME이 일치하지 않으며 수업 자료도 확인 필요로 표시함 실제 적용할 DB명, 서비스명은 확인 불가이며 그 값을 임의로 맞춘 설정은 제공하지 않음 소스 DBLOGIN에는 ORA-26944, OGG-25108 권한 경고와 로그인 성공이 함께 기록되어 있어 권한 구성이 모두 정상이라고 판정할 수 없음 권한 목록과 관리 권한 프로시저의 동등성, 최소 권한 여부도 확인 불가

#필수 명령어 또는 SQL

소스·타깃 SQL*Plus (SYSDBA)조회만 함
archive log list;
show parameter spfile
show parameter enable_goldengate_replication
select log_mode, force_logging, supplemental_log_data_min
  from v$database;

결과 해석: 사전 점검 수업 자료에는 Archive Mode, Automatic archival Enabled와 최소 보충 로깅 YES가 제시됨

소스·타깃 SQL*Plus (SYSDBA)객체 또는 설정을 변경함
alter system set enable_goldengate_replication=true scope=both;
alter database force logging;
alter database add supplemental log data;

결과 해석: 최소 보충 로깅의 확인 출력은 YES이며 다른 설정 변경의 전체 출력은 기재 없음

구성 순서 설정, 등록 항목
Manager CREATE SUBDIRS 후 MGR에 PORT 7809, DYNAMICPORTLIST 7810-7820, 자동 재시작과 체크포인트 기반 트레일 정리 설정
EXT1 EXTTRAIL에 로컬 트레일 지정, TABLE scott.* 지정, ADD SCHEMATRANDATA 후 TRANLOG, BEGIN NOW로 등록
PMP1 EXTTRAILSOURCE로 로컬 트레일 등록, RMTHOST, MGRPORT와 RMTTRAIL로 상대 전송 경로 설정
REP1 타깃 DBLOGIN, 체크포인트 테이블 생성, MAP scott., TARGET scott. 설정 후 원격 트레일과 체크포인트 테이블로 등록
소스 GGSCI (복제 계정 DBLOGIN 이후)객체 또는 설정을 변경함
ADD SCHEMATRANDATA scott
ADD EXTRACT EXT1, TRANLOG, BEGIN NOW
ADD EXTTRAIL ./dirdat/lt, EXTRACT EXT1, MEGABYTES 500
ADD EXTRACT PMP1, EXTTRAILSOURCE ./dirdat/lt
ADD RMTTRAIL ./dirdat/rt, EXTRACT PMP1, MEGABYTES 500

결과 해석: 실습에서는 등록 후 기동한 EXT1의 RUNNING 상태를 제시하며 각 ADD 명령의 출력은 기재 없음

타깃 GGSCI (복제 계정 DBLOGIN 이후)객체 또는 설정을 변경함
ADD CHECKPOINTTABLE <SCHEMA>.ggs_checkpoint
ADD REPLICAT REP1, EXTTRAIL ./dirdat/rt, BEGIN NOW, CHECKPOINTTABLE <SCHEMA>.ggs_checkpoint

결과 해석: 실습에서는 이후 INFO ALL에서 REP1 RUNNING을 제시하며 이 등록문 자체의 출력은 기재 없음

#설치와 파라미터 파일 (실습 전체 흐름)

파일 (/home/oracle/oraInst.loc)객체 또는 설정을 변경함
inventory_loc=/home/oracle/oraInventory
inst_group=oinstall
oracle 계정 셸객체 또는 설정을 변경함
unzip <OGG_ZIP>
mkdir -p /u01/app/oracle/goldengate/19c
cd fbo_ggs_Linux_x64_shiphome/Disk1/
./runInstaller -silent \
  INSTALL_OPTION=ORA19c \
  SOFTWARE_LOCATION=/u01/app/oracle/goldengate/19c \
  -invPtrLoc /home/oracle/oraInst.loc \
  START_MANAGER=false

# .bash_profile
export OGG_HOME=/u01/app/oracle/goldengate/19c
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$OGG_HOME:$LD_LIBRARY_PATH
export PATH=$OGG_HOME:$PATH
which ggsci

결과 해석:

실습 기록: silent 설치는 Successfully Setup Software.로 끝났음
Silent 설치에는 인벤토리 위치를 알려 주는 oraInst.loc가 필요함

소스 SQL*Plus (SYSDBA)객체 또는 설정을 변경함
CREATE USER <OGG_USER> IDENTIFIED BY <PASSWORD>
  DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp QUOTA UNLIMITED ON users;
GRANT CREATE SESSION TO <OGG_USER>;
EXEC DBMS_GOLDENGATE_AUTH.GRANT_ADMIN_PRIVILEGE('<OGG_USER>', 'CAPTURE');   -- 타깃은 'APPLY'

결과 해석:

실습은 프로시저 대신 소스에 CREATE SESSION, ALTER SESSION, SELECT ANY DICTIONARY, SELECT ANY TABLE, FLASHBACK ANY TABLE, LOGMINING, DBMS_FLASHBACK 실행, V_$DATABASE, V_$LOG, V_$LOGFILE, V_$ARCHIVED_LOG, V_$LOGMNR_CONTENTS 조회 권한과 DBMS_XSTREAM_GG_ADM, DBMS_CAPTURE_ADM, DBMS_APPLY_ADM, DBMS_XSTREAM_ADM 실행 권한을 하나씩 줬고, 타깃에는 DBA와 같은 패키지 권한을 줬음
수업 자료는 XStream 관련 권한이 없으면 ADD SCHEMATRANDATA가 실패한다고 적음

프로시저 하나로 줄 때는 역할을 지정하지 않는 GRANT_ADMIN_PRIVILEGE('<OGG_USER>') 형식도 함께 제시됨

GGSCI (EDIT PARAMS MGR)객체 또는 설정을 변경함
PORT 7809
DYNAMICPORTLIST 7810-7820
AUTORESTART EXTRACT *,  RETRIES 5, WAITMINUTES 1
AUTORESTART REPLICAT *, RETRIES 5, WAITMINUTES 1
PURGEOLDEXTRACTS ./dirdat/*, USECHECKPOINTS, MINKEEPDAYS 3
GGSCI (EDIT PARAMS EXT1 / PMP1 / REP1)객체 또는 설정을 변경함
EXTRACT EXT1
USERID <OGG_USER>@<SOURCE_ALIAS>, PASSWORD <PASSWORD>
EXTTRAIL ./dirdat/lt
TABLE scott.*;

EXTRACT PMP1
USERID <OGG_USER>@<SOURCE_ALIAS>, PASSWORD <PASSWORD>
RMTHOST <TARGET_HOST>, MGRPORT 7809
RMTTRAIL ./dirdat/rt
TABLE scott.*;

REPLICAT REP1
USERID <OGG_USER>@<TARGET_ALIAS>, PASSWORD <PASSWORD>
MAP scott.*, TARGET scott.*;
GGSCI객체 또는 설정을 변경함
CREATE SUBDIRS
START MGR
INFO MGR
START EXTRACT EXT1
START EXTRACT PMP1
START REPLICAT REP1
INFO ALL
STATS EXTRACT EXT1
STATS REPLICAT REP1

결과 해석:

구성 요소 역할
Pump(PMP1) Extract의 한 종류라 EXTRACT로 선언하며, 리두가 아니라 EXT1이 만든 로컬 트레일(lt)을 읽어 상대 서버 Manager 포트로 보냄
RMTTRAIL 상대 서버에 쌓일 원격 트레일
체크포인트 테이블 Replicat이 어디까지 반영했는지 기록해, 프로세스가 죽었다 살아나도 이어서 적용함
MAP ..., TARGET ... 소스 테이블을 타깃 테이블로 연결
STATS 프로세스별 INSERT, UPDATE, DELETE 처리 건수, 양쪽 건수로 누락 여부를 봄

실습 기록: START MGR 뒤 INFO MGR은 Manager is running (IP port TCP:<HOST>.7809 ...), INFO EXTRACT EXT1은 Status RUNNING과 Log Read Checkpoint(Oracle Redo Logs, Seqno 8)였고, 마지막 INFO ALL에서 MANAGER, EXT1, PMP1, REP1이 모두 RUNNING, Lag 00:00:00이었음
소스에서 UPDATE dept SET dname = 'SEOUL' WHERE deptno = 10, COMMIT 뒤 10~20초 안에 타깃에서 같은 값이 보였음(소스 → EXT1 → lt → PMP1 → rt → REP1 → 타깃)
커밋된 트랜잭션만 복제됨

#사용 조건과 주의사항

BEGIN NOW 등록 이전 데이터의 초기 적재 절차는 이 설치 본문에 기재 없음 df-h 표기는 공백 누락으로 의심됨

SEO_HKabsumveritas@gmail.comBuilt with Claude Code & Codex

마지막 갱신 개인 학습 기록이며 운영 환경 적용 전 공식 문서 확인 필요

두 글자 이상 입력, 위아래 화살표로 이동하고 Enter로 열기