기술 정보
home
채널 소개
home

Prosync 4.4.0에서 NO_DCR_TABLE_SKIP_ERROR 파라미터가 적용되지 않는 현상

문서 유형
장애 해결
분야
관리/환경설정
키워드
prosync
적용 제품 버전
5SP1FS01
5SP1FS02
5SP1FS03
5SP1FS04
5SP1FS06
6FS01
6FS02
6FS03
6FS04
6FS05
6FS06
6FS07
6FS07PS
7FS01
7FS02
1 more property

현상

Prosync 4.4.0에서 NO_DCR_TABLE_SKIP_ERROR=Y 파라미터를 설정했음에도 불구하고, 관련 에러가 정상적으로 skip되지 않는 현상이 발생합니다.

원인

DISCARD_YN 파라미터가 신규 생성된 후, 기존의 NO_DCR_TABLE_SKIP_ERROR 파라미터와 기능이 유사하여 NO_DCR_TABLE_SKIP_ERROR 파라미터는 Prosync 4.3.4 이후 버전에서 제외되었습니다.

해결

기존 NO_DCR_TABLE_SKIP_ERROR 파라미터를 사용하고 싶다면, NO_DCR_TABLE_SKIP_ERROR 대신 DISCARD_YN 파라미터를 사용해야 합니다.

DISCARD_YN 관련 파라미터 가이드

파라미터
기능
DISCARD_YN
- discard 기능을 끄고 켜는 파라미터 - default 값은 N
DISCARD_EC
- discard 할 에러코드를 기입하는 파라미터 - default 값은 없으며, no data found 에러의 경우 에러코드 2를 사용 ex) DISCARD_EC=(2 10007 8026) [최대 256개]
DISCARD_FILE_YN
- discard 가 발생했을 때 해당 내용을 discard 파일에 남기는 기능을 끄고 켜는 파라미터 - default 값은 N
DISCARD_FILE_SIZE
- discard 파일의 최대 크기를 기입하는 파라미터 - default 값은 100M
DISCARD_FILE_DIR
- discard 파일의 저장 위치를 기입하는 파라미터 - default 값은 LOG_DIR 파라미터와 동일하게 설정됨
DISCARD_BACKUP_DIR
- discard 파일의 크기가 초과되어 backup 되는 위치를 기입하는 파라미터 - default 값은 DISCARD_FILE_DIR/backup 경로로 설정
DISCARD_BACKUP_SIZE
- backup 디렉토리의 크기를 기입하는 파라미터 - default 값은 0 [무제한]

파라미터 사용 예시

1. 데이터가 다른 테이블에 대해 DML 수행
NO DATA FOUND 에러를 유발하기 위해, Source 에만 존재하는 데이터를 삭제합니다.
Source 에는 c1=2인 row가 존재하지만, Target 에는 c1=2인 데이터가 없기 때문에, 동기화 과정에서 Target Prosync 측에서 "데이터를 찾을 수 없음(NO DATA FOUND)" 에러가 발생하게 됩니다.
Source
SQL> select * from t1; C1 C2 C3 ---------- -------------------- ----------------- 3 test test 1 테스트 하하 2 test test SQL> delete from t1 where c1=2; 1 행이 삭제되었습니다. SQL> commit; 커밋이 완료되었습니다. SQL> select * from t1; C1 C2 C3 ---------- -------------------- -------------------- 3 test test 1 테스트 하하
SQL
복사
Target
SQL> select * from t1; C1 C2 C3 ---------- --------------- -------------- 1 테스트 하하 3 test test SQL> SQL> SQL> SQL> SQL> select * from t1; C1 C2 C3 ---------- --------------- -------------- 1 테스트 하하 3 test test
SQL
복사
2. Apply 로그에서 에러 로그 확인
Target 에 존재하지 않는 데이터를 삭제한 후, Apply 로그에서 "NO DATA FOUND" 에러가 발생한 것을 확인할 수 있습니다.
[05-01T21:35:03.802986] [REP-04] [T] replay delete (obj_id:238123, col_cnt:3) [05-01T21:35:03.803025] [REP-04] [T] execute delete (DELETE FROM "TIBERO"."T1" WHERE "C1" = :"C1" AND "C2" = :"C2" AND "C3" = :"C3" AND ROWNUM = 1) [05-01T21:35:03.803034] [REP-04] [D] prepare SQL (DELETE FROM "TIBERO"."T1" WHERE "C1" = :"C1" AND "C2" = :"C2" AND "C3" = :"C3" AND ROWNUM = 1) [05-01T21:35:03.803063] [REP-04] [D] natparam #1 (type:NUMBER, len:3) [05-01T21:35:03.803071] [REP-04] [D] 0000: 02 c1 82 ... [05-01T21:35:03.803085] [REP-04] [D] natparam #2 (type:VARCHAR, len:4) [05-01T21:35:03.803091] [REP-04] [D] 0000: 74 65 73 74 test [05-01T21:35:03.803099] [REP-04] [D] natparam #3 (type:VARCHAR, len:4) [05-01T21:35:03.803105] [REP-04] [D] 0000: 74 65 73 74 test [05-01T21:35:03.803690] [REP-04] [T] no data found [05-01T21:35:03.803699] [REP-04] [E] DELETE: no data found [prs_apply_replay.c:3575] [05-01T21:35:03.803706] [REP-04] [T] send ipc (type:PRS_IPC_ERROR_LOG, tid:0, key:0 src_id:-1) [05-01T21:35:03.803713] [REP-04] [E] Replay delete failed.(xid: 3940649673949184, stmt: DELETE FROM "TIBERO"."T1" WHERE "C1" = :"C1" AND "C2" = :"C2" AND "C3" = :"C3" AND ROWNUM = 1) [prs_apply_replay.c:3608]
SQL
복사
3. Apply 설정에 DISCARD 관련 파라미터 추가 후 Prosync 재기동
Skip하려는 에러 코드를 DISCARD_EC 파라미터에 설정한 후, Prosync를 재기동하여 수행합니다.
################################################################################ # # ProSync (Apply) Initialization Parameters # ################################################################################ LOG_LEVEL=5 PRS_USER=US_PROSYNC_G2I PRS_PWD=#encrypted APPLY_NUM=1 TAR_DB_TYPE=TIBERO TAR_DB_NAME=tibero7_2 SRC_DB_CNT=1 #MAP=(TABLE DEFAULT) #DDL=(INCLUDE DEFAULT, TYPE=('ALTER TABLE','TRUNCATE TABLE')) MAP=(TABLE DEFAULT #TABLE TIBERO.PKY,TIBERO.PKY RESOLVE BY SOURCE #TABLE TIBERO.T3,TIBERO.T3 RESOLVE BY SOURC ) DDL=(EXCLUDE ALL, TYPE=('ALTER TABLE','TRUNCATE TABLE')) LOG_DIR=/idiska/pub1/jsh/7.2.2/0423/prosync4/var/US_PROSYNC_G2I/log LOG_BACKUP_DIR=/idiska/pub1/jsh/7.2.2/0423/prosync4/var/US_PROSYNC_G2I/log/backup LOG_BACKUP_SIZE=5G USE_PK_FOR_WHERE=Y DISCARD_YN=Y DISCARD_EC=(2) DISCARD_FILE_YN=Y
SQL
복사
[05-01T21:48:11.637779] [REP-04] [T] replay delete (obj_id:238123, col_cnt:3) [05-01T21:48:11.637811] [REP-04] [T] execute delete (DELETE FROM "TIBERO"."T1" WHERE "C1" = :"C1" AND "C2" = :"C2" AND "C3" = :"C3" AND ROWNUM = 1) [05-01T21:48:11.637814] [REP-04] [D] prepare SQL (DELETE FROM "TIBERO"."T1" WHERE "C1" = :"C1" AND "C2" = :"C2" AND "C3" = :"C3" AND ROWNUM = 1) [05-01T21:48:11.637822] [REP-04] [D] natparam #1 (type:NUMBER, len:3) [05-01T21:48:11.637826] [REP-04] [D] 0000: 02 c1 82 ... [05-01T21:48:11.637840] [REP-04] [D] natparam #2 (type:VARCHAR, len:4) [05-01T21:48:11.637843] [REP-04] [D] 0000: 74 65 73 74 test [05-01T21:48:11.637847] [REP-04] [D] natparam #3 (type:VARCHAR, len:4) [05-01T21:48:11.637849] [REP-04] [D] 0000: 74 65 73 74 test [05-01T21:48:11.638213] [REP-04] [T] no data found [05-01T21:48:11.638222] [REP-04] [E] DELETE: no data found [prs_apply_replay.c:3575] [05-01T21:48:11.638229] [REP-04] [T] send ipc (type:PRS_IPC_ERROR_LOG, tid:0, key:0 src_id:-1) [05-01T21:48:11.638235] [REP-04] [E] Replay delete failed.(xid: 3940649673949184, stmt: DELETE FROM "TIBERO"."T1" WHERE "C1" = :"C1" AND "C2" = :"C2" AND "C3" = :"C3" AND ROWNUM = 1) [prs_apply_replay.c:3608] [05-01T21:48:11.638240] [REP-04] [T] send ipc (type:PRS_IPC_ERROR_LOG, tid:0, key:0 src_id:-1) [05-01T21:48:11.638266] [CTH-00] [T] event occurred (fd:16, type:1, idx:0) [05-01T21:48:11.638269] [REP-04] [E] unable to get error code (rc:100) [prs_apply_replay.c:3622] [05-01T21:48:11.638284] [REP-04] [E] Error discarded : no data found [prs_apply_replay.c:3641]
SQL
복사
4. Apply 로그 확인
Apply 로그에서 Error discarded 메시지를 확인합니다.
이 메시지는 에러가 발생한 DML을 Skip 처리했다는 의미입니다.
[05-01T21:48:11.637779] [REP-04] [T] replay delete (obj_id:238123, col_cnt:3) [05-01T21:48:11.637811] [REP-04] [T] execute delete (DELETE FROM "TIBERO"."T1" WHERE "C1" = :"C1" AND "C2" = :"C2" AND "C3" = :"C3" AND ROWNUM = 1) [05-01T21:48:11.637814] [REP-04] [D] prepare SQL (DELETE FROM "TIBERO"."T1" WHERE "C1" = :"C1" AND "C2" = :"C2" AND "C3" = :"C3" AND ROWNUM = 1) [05-01T21:48:11.637822] [REP-04] [D] natparam #1 (type:NUMBER, len:3) [05-01T21:48:11.637826] [REP-04] [D] 0000: 02 c1 82 ... [05-01T21:48:11.637840] [REP-04] [D] natparam #2 (type:VARCHAR, len:4) [05-01T21:48:11.637843] [REP-04] [D] 0000: 74 65 73 74 test [05-01T21:48:11.637847] [REP-04] [D] natparam #3 (type:VARCHAR, len:4) [05-01T21:48:11.637849] [REP-04] [D] 0000: 74 65 73 74 test [05-01T21:48:11.638213] [REP-04] [T] no data found [05-01T21:48:11.638222] [REP-04] [E] DELETE: no data found [prs_apply_replay.c:3575] [05-01T21:48:11.638229] [REP-04] [T] send ipc (type:PRS_IPC_ERROR_LOG, tid:0, key:0 src_id:-1) [05-01T21:48:11.638235] [REP-04] [E] Replay delete failed.(xid: 3940649673949184, stmt: DELETE FROM "TIBERO"."T1" WHERE "C1" = :"C1" AND "C2" = :"C2" AND "C3" = :"C3" AND ROWNUM = 1) [prs_apply_replay.c:3608] [05-01T21:48:11.638240] [REP-04] [T] send ipc (type:PRS_IPC_ERROR_LOG, tid:0, key:0 src_id:-1) [05-01T21:48:11.638266] [CTH-00] [T] event occurred (fd:16, type:1, idx:0) [05-01T21:48:11.638269] [REP-04] [E] unable to get error code (rc:100) [prs_apply_replay.c:3622] [05-01T21:48:11.638284] [REP-04] [E] Error discarded : no data found [prs_apply_replay.c:3641]
SQL
복사
5. Discard 로그 확인
Discard 로그를 통해 Skip 처리된 DML 내역을 확인할 수 있습니다.
[05-01T21:48:11.638293] [REP-04] [I] Error discarded : no data found [05-01T21:48:11.638301] [REP-04] [I] sql : DELETE FROM "TIBERO"."T1" WHERE "C1" = :"C1" AND "C2" = :"C2" AND "C3" = :"C3" AND ROWNUM = 1 , xid:3940649673949184 ,seqno:3636 ,tsn:315844751 ,obj_id:238123 [05-01T21:48:11.638305] [REP-04] [I] WHERE clause columns (col_cnt:3) [05-01T21:48:11.638343] [REP-04] [I] end sql
SQL
복사
주의
에러로 인해 적용에 실패한 DML을 건너뛰게 하는 파라미터이므로, 해당 DML이 처리하는 row는 Source와 Target 간 데이터 불일치가 발생할 수 있다는 점을 유의해야 합니다.