기술 정보
home
채널 소개
home

버전 간 JAVA External Procedure 동작 차이 (TBR-150008 발생)

문서 유형
장애 해결
분야
인터페이스/연동
키워드
extproc
적용 제품 버전
6FS07
오류 코드

현상

동일한 시나리오로 Tibero 6 FS07 CS2005 바이너리에서 JAVA External Procedure 수행 시 정삭적인 결과값이 출력되었으나, Tibero 7 PatchSet 바이너리에서 JAVA External Procedure 수행 시 TBR-150008 에러가 발생하였습니다. Tibero 6 FS07 CS2005, Tibero 7 PatchSet 바이너리 버전간 동작 차이에 대해 확인합니다.
참고
Tibero 7 온라인 매뉴얼 Java External Procedure 부분을 참고하여 동일하게 진행하였습니다.

Tibero 7 PatchSet 바이너리

SQL> CREATE OR REPLACE AND RESOLVE JAVA SOURCE NAMED "JavaExtproc" AS package com.tmax; public class SimpleMath { public static int findMax(int x, int y) { if (x >= y) return x; else return y; } } / Java Source 'JavaExtproc' created. SQL> CREATE OR REPLACE FUNCTION find_max(x PLS_INTEGER, y PLS_INTEGER) RETURN PLS_INTEGER IS LANGUAGE JAVA NAME 'SimpleMath.findMax(int, int) return int'; / Function 'FIND_MAX' created. SQL> select find_max(4,60) from dual; TBR-150008:Invalid class name. - SimpleMath
SQL
복사

Tibero 6 FS07_CS_2005 (build 202719) 바이너리

SQL> CREATE OR REPLACE AND RESOLVE JAVA SOURCE NAMED "JavaExtproc" AS public class SimpleMath { public static int findMax(int x, int y) { if (x >= y) return x; else return y; } } / Java Source 'JavaExtproc' created. SQL> CREATE OR REPLACE FUNCTION find_max(x PLS_INTEGER, y PLS_INTEGER) RETURN PLS_INTEGER IS LANGUAGE JAVA NAME 'SimpleMath.findMax(int, int) return int'; / Function 'FIND_MAX' created. SQL> select find_max(4,60) from dual; FIND_MAX(4,60) 60 1 row selected.
SQL
복사

원인

Tibero 6 FS07_CS2005 바이너리의 경우, drop, replace java source ddl 수행 시 refresh message 양식 오류로 JEPA에서 이를 처리하지 못하여 에러가 발생합니다. Caching 되어 있던 java source를 가져왔기 때문에 class 경로를 명시하지 않아도 정상 수행 되는 현상이 존재하여 패치 적용 필요합니다.
Tibero 7 PatchSet 동작이 정상 동작입니다. JAVA_CLASS_PATH 설정 시 Defualt로 JAVA_CLASS_PATH 경로 하위에 DB USER 스키마명으로 디렉터리가 생성됩니다. (경로: JAVA_CLASS_PATH / 스키마명 / class 이름)

해결

패치를 적용해 해결합니다. (적용 패치: FS07_223058c )
주의
티맥스티베로에서 제공하는 기술지원을 통해 패치를 적용합니다.