기술 정보
home
채널 소개
home

DB Link 사용 시 PSM 컴파일 되지 않는 현상

문서 유형
장애 해결
분야
인터페이스/연동
키워드
CHARSET
dblink
적용 제품 버전
6FS01
6FS02
6FS03
6FS04
6FS05
6FS06
6FS07
6FS07PS
7FS01
7FS02
7FS02PS
7FS02PS
1 more property

현상

DB Link 를 통해 PSM 수행 시 컴파일 TBR-8164 에러가 발생합니다.
컴파일 에러 발생
SQL> show error; Errors for Procedure MTCFP.SP_SDR_WORK_OPERATION: ERROR DESCRIPTION -------------------------------------------------------------------------------- TBR-8164: Unable to convert data due to character set mismatch. at line 60, column 13 of null: select b.site_code site_id, b.worder, b.wchasu, ^ 1 row selected.
SQL
복사
sys.log 및 gateway log 에 아래와 같은 에러 메세지 발생
[10-06T16:52:20.959921] [FRM-378] [I] THROW. ec=ERROR_DML_DIFF_CHARSET_NOT_PERMITTED(-8164) [ Unable to convert data due to character set mismatch.] (csr_id:4294967295) [dml_dblink.c:282:dml_dblink_make_lp_column]
SQL
복사

원인

Tibero와 Gateway 간에 문자셋(CHARSET) 차이가 존재할 시, 해당 차이로 인해 DML 문이 실패하는 현상이 발생할 수 있습니다. 이 경우, CHARSET의 영향을 받는 쿼리는 실행되지 않으며 오류가 반환됩니다.

해결

_ALLOW_DIFF_CHARSET_INSTANCE=Y 파라미터를 활성화함으로써 문자셋(CHARSET)의 차이가 있더라도 쿼리가 정상적으로 수행되도록 설정할 수 있으며, 이를 통해 관련 오류를 방지할 수 있습니다.
파라미터 동적 적용
QL> ALTER SYSTEM SET _ALLOW_DIFF_CHARSET_INSTANCE = ‘Y'; System altered. SQL> select name, value, dflt_value, is_dynamic from vt_parameter where name in(' _ALLOW_DIFF_CHARSET_INSTANCE '); NAME VALUE DFLT_VALUE IS_DYNAMIC ------------------------------- ---------- ---------- ----------- _ALLOW_DIFF_CHARSET_INSTANCE YES NO 1
SQL
복사
TIP 파일 영구 적용
]$ vi $TB_HOME/config/$TB_SID.tip _ALLOW_DIFF_CHARSET_INSTANCE=Y
SQL
복사
참고
다른 인코딩 간의 DB Link 를 허용하는 경우, 인코딩 차이로 인해 문자열 자체가 깨져보일 수 있습니다.