본문 바로가기

데이터 사이언스 DataScience/Data Base 데이터베이스

[Oracle] OGG 오류 무시하는 방법, 특정 데이터만 동기화하는 방법

OGG는 Oracle에서 제공하는 CDC(실시간 데이터 동기화) 솔루션으로

서로 다른 Oracle DBMS 데이터를 동기화할때 효과적이다.

 

참고 : https://subbak2.tistory.com/93

 

[Oracle] OGG란? CDC솔루션 쓰는 이유

1. CDC 솔루션의 필요성 - CDC란? Change Data Capture.  변경되는 데이터를 실시간으로 다른 데이터베이스에 동기화 시켜주는 기술을 의미한다. 예를 들어 A 서버에 있는 테이블의 데이터가 변경되면,

subbak2.tistory.com

 

 

운영환경에서 특정 테이블의 데이터를 동기화할때 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

반응형