User Filtering

ProSync는 특정 사용자에 의해서 발생된 DML 및 DDL을 동기화에서 제외할 수 있는 기능을 제공한다.

양방향 동기화

변경 데이터가 다시 추출될 수 있다.

같은 테이블에 대해 Source DB에서 Target DB로, Target DB에서 Source DB로 동기화 하도록 2개의 Prosync 인스턴스를 사용하여 구성할 수 있다. 이 경우, 별 다른 설정이 없다면 상대방의 PRS_USER가 반영한 동기화 데이터가 다시 추출되어 Source DB로 전송될 수 있다.

Redo Log에는, tx에 대해 이를 수행 한 User를 알 수 있는 정보가 있으며 ProSync는 이 정보를 활용해 상대방의 PRS_USER로 EXCLUDE_USER 파라미터를 설정하여 이미 반영한 데이터를 재반영하는 현상을 막을 수 있다.

사용

다음은 TEST 사용자와 PRS_USER 사용자를 동기화에서 제외하는 예제이다.

EXCLUDE_USER=PRS_USER.TEST

파라미터
설명

EXCLUDE_USER

동기화에서 제외할 사용자 이름을 등록한다

참고

양방향 과 Oracle 관련 제약사항

ProSync 4.4.x 버전의 Oracle 이 포함된 양방향 동기화에선 ROLLBACK_OBJECT_IDS 파라미터를 설정해야한다.

Redo상에 남는 세션 정보를 통해 필터링 하는 기존 방식과 다르게, ProSync가 동기화 한 트랜잭션을 Object id(Segment id)로 감지하고 이를 통해 트랜잭션 자체를 롤백 하는 기능이다.

ProSync의 Apply프로세스는 PRS_COMMITTED_TX_LIST 테이블을 조작하게 되어있으며, 이에 대한 Object id, Segment id를 위 파라미터에 모두 작성해주면 된다.

다음은 조회 쿼리 예시이다. (Tibero의 경우 추출 시 Supplemental Log로 Object id가 남으므로 Segment를 조회하거나 추가할 필요는 없다.)

양방향을 위해 PRS_COMMITTED_TX_LIST 에는 모두 Supplemental Logging 옵션이 켜져있어야 한다.

Target Oracle Object ID 조회

SELECT O.OBJ#
FROM SYS.OBJ$ O, SYS.USER$ U
WHERE O.OWNER# = U.USER#
AND O.TYPE# = 2
AND U.TYPE# = 1
AND U.NAME = 'Target Prosync Instance Meta User'
AND O.NAME = 'PRS_COMMITTED_TX_LIST';
SELECT DATAOBJ#
FROM SYS.OBJ$ O, SYS.USER$ U
WHERE O.OWNER# = U.USER#
AND O.TYPE# IN (2, 19, 34)
AND U.TYPE# = 1
AND U.NAME = 'Target Prosync Instance Meta User'
AND O.NAME = 'PRS_COMMITTED_TX_LIST'
AND O.DATAOBJ# IS NOT NULL;

Target Oracle SGMT ID 조회

SELECT DATAOBJ#, OBJ#
FROM SYS.OBJ$ O, SYS.USER$ U
WHERE O.OWNER# = U.USER#
AND O.TYPE# IN (2, 19, 34)
AND U.TYPE# = 1
AND U.NAME = 'Target Prosync Instance Meta User'
AND O.NAME = 'PRS_COMMITTED_TX_LIST'
AND O.DATAOBJ# IS NOT NULL;

Target Tibero Object ID 조회

SELECT O.OBJ_ID
FROM SYS._DD_OBJ O, SYS._DD_USER U
WHERE O.OWNER_ID = U.USER_ID
AND O.TYPE_NO = 1
AND U.TYPE_NO = 1
AND U.NAME = 'Target Prosync Instance Meta User'
AND O.NAME = 'PRS_COMMITTED_TX_LIST';

Last updated