문서유형ㅣ장애해결
분야ㅣ인터페이스/연동
적용제품버전ㅣ6FS01, 6FS02, 6FS03, 6FS04, 6FS05, 6FS06, 6FS07, 6FS07PS, 7FS01, 7FS02, 7FS02PS
문서번호ㅣTIITS001
현상
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.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]
원인
Tibero와 Gateway 간에 문자셋(CHARSET) 차이가 존재할 시, 해당 차이로 인해 DML 문이 실패하는 현상이 발생할 수 있습니다. 이 경우, CHARSET의 영향을 받는 쿼리는 실행되지 않으며 오류가 반환됩니다.
해결
_ALLOW_DIFF_CHARSET_INSTANCE=Y 파라미터를 활성화함으로써 문자셋(CHARSET)의 차이가 있더라도 쿼리가 정상적으로 수행되도록 설정할 수 있으며, 이를 통해 관련 오류를 방지할 수 있습니다.
파라미터 동적 적용
SQL> 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
TIP 파일 영구 적용
]$ vi $TB_HOME/config/$TB_SID.tip _ALLOW_DIFF_CHARSET_INSTANCE=Y
참고다른 인코딩 간의 DB Link 를 허용하는 경우, 인코딩 차이로 인해 문자열 자체가 깨져보일 수 있습니다.