현상
동일한 시나리오로 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 )
주의
티맥스티베로에서 제공하는 기술지원을 통해 패치를 적용합니다.