OGG는 Oracle에서 제공하는 CDC(실시간 데이터 동기화) 솔루션으로
서로 다른 Oracle DBMS 데이터를 동기화할때 효과적이다.
참고 : https://subbak2.tistory.com/93
운영환경에서 특정 테이블의 데이터를 동기화할때 FILTERING해야하는 상황이 생길 수 있다.
원천이 되는 DB를 소스DB, 동기화 대상이 되는 DB를 타겟DB라고 한다면
소스DB의 데이터와 타겟 DB의 데이터가 보안 등의 이유로 완전히 일치하지 않을수도 있다.
아래와 같은 3가지 경우는 Replicator의 Parameter 파일에 아래 내용을 추가해 조치할 수 있다.
1. 타겟 DB에서 PK를 위반하는 데이터 변경이 있을경우
기존 데이터가 있는데 PK가 동일한 데이터가 insert되면
ORA-00001 : unique constraint violated 에러가 발생하게 된다.
1) 오류를 무시하고 진행
-- ORA-00001 에러가 발생할 경우 에러를 무시하겠다(ignore)
reperror -1, ignore
2) 오류를 무시하고 진행하되 파일에 내역 남기기
-- discardfile은 명시해줘야하며 크기가 비대해질 수 있으니 용량관리도 해야한다.
discardfile ./경로/파일이름.dsc, append, megabytes 1000
-- ORA-00001 에러가 발생할 경우 discard 파일에 기록 후 에러를 무시하겠다
reperror -1, discard
2. 타겟 DB에 없는 데이터가 소스DB에서 UPDATE/DELETE가 발생했을때
데이터가 없는데 update/ delete가 발생하면
ORA-01403 : no data found 에러가 발생하게 된다.
1) 오류를 무시하고 진행
-- ORA-01403 에러가 발생할 경우 에러를 무시하겠다(ignore)
reperror -1403, ignore
2) 오류를 무시하고 진행하되 파일에 내역 남기기
-- discardfile은 명시해줘야하며 크기가 비대해질 수 있으니 용량관리도 해야한다.
discardfile ./경로/파일이름.dsc, append, megabytes 1000
-- ORA-01403 에러가 발생할 경우 discard 파일에 기록 후 에러를 무시하겠다
reperror -1403, discard
3. 특정 컬럼의 값이 유효값인 경우만 타겟 DB에서 동기화 진행
- 소스 DB 스키마 이름 : SRC / 타겟 DB 스키마 이름 : TGT
- 테이블 이름 : TABLE_NAME
- 컬럼명 : COLUMN_NAME
- 유효값 : '01', '02', '03'
인 경우에만 동기화를 하는 경우 PARAMETER
MAP SRC.TABLE_NAME, TARGET TGT.TABLE_NAME, colmap(usedefaults), filter(@IF(@VALONEOF(COLUMN_NAME, '01', '02', '03'), 1, 0));
위 3가지 경우 모두 Replicator의 parameter를 변경한 것이므로,
Extractor에서는 모든 데이터가 추출되며,
1) 타겟 DBMS별로 다른 설정
2) 소스 DBMS에는 filtering 조건으로 인한 추가부하를 방지
할 수 있다.
* 참고자료 :
https://docs.oracle.com/cd/E11882_01/server.112/e17766/e0.htm
https://docs.oracle.com/goldengate/1212/gg-winux/GWURF/gg_parameters126.htm#GWURF603
https://docs.oracle.com/goldengate/1212/gg-winux/GWURF/column_conversion_functions038.htm
'데이터 사이언스 DataScience > Data Base 데이터베이스' 카테고리의 다른 글
[Oracle] 온라인 인덱스 작업이 불가능한 상황 (0) | 2022.01.10 |
---|---|
[Oracle] 튜닝 최후의 수단 PROFILE (0) | 2022.01.09 |
[Oracle] OGG란? CDC솔루션 쓰는 이유 (0) | 2021.12.22 |
[Oracle] data pump 이관시 LOB 저장 방식 변경 (0) | 2021.12.01 |
[Oracle] 데이터베이스 인수인계 체크리스트 (0) | 2021.11.23 |