Oracle GoldenGate 일상 운영 및 장애 시나리오 (Microservices 21c / 23ai)
Oracle난이도: 고급소요 시간: 5분 (점검) – 2시간 (업그레이드, 테이블 추가)이미 구성된 GoldenGate Microservices 복제의 일상 운영 및 장애 복구 runbook입니다(설치는 GoldenGate 설치 가이드 참조). 무엇을 해야 할지 확실하지 않으면 '상태 및 지연 점검'부터 시작합니다. 읽기 전용 진단이 알맞은 시나리오로 안내합니다 — Extract와 Replicat ABEND(report, discard, OGG-xxxxx 오류), 데이터가 있는 테이블을 복제에 추가(일관된 SCN + AFTERCSN), 테이블 제외, 단일 테이블 resync, trail 정리(Purge Trail), Extract를 SCN부터 재배치, 버전 업그레이드/패치, 소스 Data Guard switchover/failover 후 Extract 계속 운영. 모든 시나리오는 진단 → 안전장치 → 실행 → 검증 순서를 따릅니다.
구성: 소스 서버 (소스 deployment, Integrated Extract, Distribution Path) + 타깃 서버 (타깃 deployment, Parallel Replicat)
시나리오
- 상태 및 지연 점검 (모두 정상인가?) — 읽기 전용: Service Manager와 microservice, INFO ALL, lag, STATS, heartbeat 지연, 데이터베이스의 capture 상태, ggserr.log. 아무것도 변경하지 않습니다. 무엇을 해야 할지 확실하지 않으면 여기서 시작합니다.
- Extract ABENDED (오류로 중지됨) — 소스의 Extract가 ABENDED이거나 계속 재시작됩니다. report 파일의 OGG-xxxxx 오류로 원인(연결, 누락된 아카이브 로그, log mining, 권한, 디스크)을 찾아 해결한 뒤 Extract를 멈춘 지점부터 다시 시작합니다. 소스 데이터베이스에는 영향이 없으며 지연이 쌓입니다.
- Replicat ABENDED (타깃에 적용 불가) — 타깃의 Replicat이 트랜잭션을 적용하지 못했습니다. report와 discard 파일에서 테이블, 작업, 오류를 찾고, 데이터를 수정하거나 임시 REPERROR로 건너뛴 뒤 Replicat을 멈춘 지점부터 다시 시작합니다. 타깃은 열린 상태를 유지하며 지연이 쌓입니다.
- 데이터가 있는 테이블을 복제에 추가 (초기 적재 + AFTERCSN) — 이미 존재하고 데이터가 들어 있는 테이블을 실행 중인 복제에 중단 없이 추가합니다: ADD TRANDATA, 일관된 SCN으로 expdp/impdp, 그리고 이 테이블만 해당 SCN 이후부터 적용하는 별도 Replicat(AFTERCSN). 다른 테이블은 계속 복제됩니다.
- 복제에서 테이블 제외 — 테이블을 더 이상 복제하지 않습니다: Extract에 TABLEEXCLUDE(또는 TABLE 줄 제거), Replicat에 MAPEXCLUDE, 필요하면 DELETE TRANDATA. 프로세스는 잠시 재시작됩니다.
- 단일 테이블 재동기화 (resync) — 타깃의 테이블 데이터가 소스와 어긋났습니다(수동 변경, 건너뛴 오류, 불완전한 초기 적재). 테이블을 소스에서 일관된 SCN으로 다시 적재하고, 임시 Replicat이 그 SCN 이후의 변경을 적용합니다. 다른 테이블은 영향을 받지 않습니다.
- Trail 파일이 디스크를 채움: 정리 (Purge Trail) — Trail 디렉터리가 커지거나 디스크가 곧 가득 찹니다. 어떤 파일을 읽고 있는지 확인하고, Purge Trail 작업(Classic의 PURGEOLDEXTRACTS에 해당)을 USECHECKPOINTS로 정의합니다. 긴급 시에는 이미 읽은 파일을 수동으로 삭제합니다.
- Extract를 특정 SCN으로 재배치 — Extract가 처음부터 다시 읽기를 원하는 SCN이 있습니다(trail 손실, 잘못된 시작점, 타깃 롤백). ALTER EXTRACT … SCN과 ETROLLOVER로 새 trail 파일부터 시작합니다. 같은 데이터가 타깃에 두 번 도착할 수 있습니다.
- GoldenGate 버전 업그레이드 / 패치 (Microservices) — 새 GoldenGate 릴리스나 패치로 전환합니다: out-of-place(새 home을 설치하고 Service Manager와 deployment를 REST로 새 home으로 이동) 또는 in-place OPatch. Extract/Replicat이 잠시 중지되며, 롤백은 이전 home으로 돌아가는 것입니다.
- 소스 Data Guard switchover/failover 후 Extract 계속 운영 — 소스 데이터베이스에서 switchover 또는 failover가 일어났습니다. Extract는 새 primary에 접속해 checkpoint부터 계속해야 합니다. 연결(credential alias/서비스), capture 상태, HANDLEDLFAILOVER, 데이터 불일치 가능성을 점검합니다.
시작하기 전에
- GoldenGate Microservices가 설치 가이드처럼 구성되어 있습니다: 소스의 … deployment에 Integrated Extract …와 Distribution Path …, 타깃의 … deployment에 Parallel Replicat …. credential alias는 ggsrc/ggsrc_pdb(소스)와 ggtgt(타깃).
- 두 deployment의 oggadmin 패스워드를 알고 있습니다(단계에서 물어보며 스크립트에 기록하지 않음).… 초기 적재를 위해 두 PDB의 SYSTEM 패스워드와 설치 시 만든 OGG_DP directory(…)가 준비되어 있습니다.…
- Service Manager systemd 서비스(OracleGoldenGate)가 두 서버 모두에서 실행 중입니다.
- 변경 기록/유지보수 시간이 확보되어 있습니다: …업그레이드 동안 Extract, Distribution Path, Replicat이 중지되며 지연이 쌓였다가 작업이 끝나면 해소됩니다…Extract를 되감으면 같은 트랜잭션이 타깃에 두 번 도착할 수 있어 애플리케이션 담당자와 충돌 처리 계획을 세웠습니다…REPERROR로 건너뛴 작업은 타깃에서 누락되므로 업무 담당자의 승인을 받았습니다…프로세스가 잠시 재시작됩니다….
가이드 단계
- 상태: 프로세스, 지연, 서비스 (읽기 전용) — Service Manager와 microservice 포트 확인 · 소스 프로세스, Extract 지연, Distribution Path 표시 (소스) · 타깃 프로세스와 Replicat 지연 표시 (타깃) · Heartbeat로 종단 간 지연 측정 (타깃) · 소스 데이터베이스의 capture 상태와 필요한 아카이브 로그 확인 (소스) · 오류 로그 검토 (소스) …
- 1. 진단: Extract가 중지된 이유는? — Extract 상태와 report의 오류 표시 (소스) · 데이터베이스의 capture 상태와 아카이브 로그 확인 (소스)
- 2. 안전장치 — 파라미터, checkpoint, report 파일 백업 (소스)
- 3. 실행: 원인 해결 후 Extract 시작 — 누락된 아카이브 로그를 RMAN 백업에서 복원 (소스) · 원인 해결 · Extract 시작 및 모니터링 (소스)
- 4. 검증 및 후속 조치 — 지연 해소 확인 (소스) · 근본 원인 예방 (소스)
- 1. 진단: Replicat은 어떤 작업에서 멈췄나? — Replicat 상태, report, discard 파일 표시 (타깃) · 실패한 행을 타깃과 소스에서 비교
- 2. 안전장치 — 파라미터, checkpoint, report 파일 백업 (타깃)
- 3. 실행: 데이터 수정 후 Replicat 시작 — 타깃 데이터 수정 · 오류를 일시적으로 discard로 보냄: REPERROR (타깃) · Replicat 시작 (타깃)
- 4. 검증 및 후속 조치 — Replicat 진행 확인 (타깃) · 임시 REPERROR 제거 (타깃)
- 1. 진단: 테이블이 복제에 적합한가? — 소스에서 테이블 검토 (소스) · Supplemental logging 상태 표시 (소스) · 타깃에서 테이블 확인 (타깃)
- 2. 안전장치 — 파라미터와 checkpoint 파일 백업 (소스) · 파라미터와 checkpoint 파일 백업 (타깃) · 타깃 테이블 백업 (타깃)
- 3. 실행: 테이블을 적재하고 전용 Replicat으로 시작 — 테이블 수준 supplemental logging 활성화 (소스) · 메인 Replicat에서 테이블 제외: MAPEXCLUDE (타깃) · 메인 Replicat에서 테이블의 명시적 MAP 줄 제거 (타깃) · Extract에 테이블 추가 (소스) · 이 테이블 전용 새 Replicat 추가 (타깃) · 일관된 SCN으로 테이블 export (소스) …
- 4. 검증 및 후속 조치 — 행 수 비교 (소스) · 행 수와 새 Replicat 확인 (타깃)
- 1. 진단: 테이블은 어디에 정의되어 있나? — 파라미터 파일에서 테이블이 나오는 위치와 supplemental logging 표시 (소스) · Replicat의 테이블 매핑 표시 (타깃)
- 2. 안전장치 — 파라미터와 checkpoint 파일 백업 (소스) · 파라미터와 checkpoint 파일 백업 (타깃)
- 3. 실행: Extract와 Replicat에서 테이블 제외 — Extract에서 테이블 제외 (소스) · Trail에 남은 레코드가 적용될 때까지 대기 (타깃) · Replicat에서 테이블 제외 (타깃) · 테이블의 MAP 줄 제거 (타깃) · 테이블 수준 supplemental logging 제거 (소스)
- 4. 검증 — 테이블이 더 이상 처리되지 않는지 확인 (소스)
- 1. 진단: trail이 얼마나 공간을 쓰고 누가 읽고 있나? — Trail 디렉터리와 파일 표시 (소스) · Trail 디렉터리와 Replicat이 읽는 위치 표시 (타깃)
- 2. 실행: Purge Trail 작업 정의 — 소스 deployment에 Purge Trail 작업 정의 · 타깃 deployment에 Purge Trail 작업 정의
- 3. 긴급: 이미 읽은 trail 파일 수동 삭제 — 이미 읽은 trail 파일 삭제
- 1. 진단: 해당 SCN으로 되돌아갈 수 있나? — Extract의 현재 위치 표시 (소스) · Capture의 first SCN과 아카이브 로그 확인 (소스)
- 2. 안전장치 — 파라미터, checkpoint, report 파일 백업 (소스)
- 3. 실행: Extract를 SCN으로 재배치 — Extract 중지, SCN으로 재배치 후 새 trail 파일부터 시작 (소스)
- 4. 검증 — Extract가 새 위치부터 진행하는지 확인 (소스) · 타깃의 충돌 감시 (타깃)
- 1. 진단: 현재 버전과 준비 — 현재 버전, 패치, 프로세스 기록 (소스) · 현재 버전, 패치, 프로세스 기록 (타깃)
- 2. 안전장치 — Deployment와 Service Manager 디렉터리 백업 (소스) · Deployment와 Service Manager 디렉터리 백업 (타깃)
- 3. 실행: 프로세스 중지 후 업그레이드 — 프로세스 정상 중지 (소스) · 프로세스 정상 중지 (타깃) · 새 GoldenGate home 설치 (소스) · 새 GoldenGate home 설치 (타깃) · Service Manager와 deployment를 새 home으로 이동 (소스) · OPatch로 패치 적용 (소스) …
- 4. 검증 — 프로세스 시작 및 버전 확인 (소스) · 프로세스 시작 및 버전 확인 (타깃) · 롤백 (필요한 경우)
- 1. 진단: 새 primary와 Extract의 연결 — 새 primary의 역할과 capture 상태 확인 (새 primary) · Extract 상태와 credential alias 표시 (소스)
- 2. 안전장치 — 파라미터, checkpoint, report 파일 백업 (소스)