개요
Tibero Active Cluster(이하 TAC)는 확장성, 고가용성을 목적으로 제공하는 Tibero의 주요 기능입니다.
TAC 환경에서 JAVA CLASS 사용 가이드를 소개합니다.
방법
Tibero에서는 사용자 정의 Java 클래스를 활용하여 Java EPA(External Procedure Agent)와 통신할 수 있습니다. 이 때, Java 클래스로 생성된 오브젝트는 .class파일 형태로 생성되며, 해당 파일은 JAVA_CLASS_PATH파라미터에 지정된 경로에 저장됩니다.
오류 없이 TAC 이중화 구성 환경에서 JAVA CLASS 를 사용하고자 할 경우에는 JAVA_CLASS_PATH 파라미터 값을 공유 스트리지 영역에 설정해야합니다.
주의
TAC 이중화 구성에서 JAVA_CLASS_PATH설정 값이 공유 스토리지 영역이 아닌 로컬디스크 등에 설정되어있을 경우 다음과 같은 문제가 발생할 수 있습니다.
•
1번 노드에서 Java 클래스를 생성한 경우 → .class 파일은 1번 노드에만 생성됨
•
1번 노트 생성 후, 2번 노드에서 해당 Java 오브젝트를 사용 시 → TBR-150008 오류 발생
공유 스토리지 영역이 아닐 경우
•
1 번 노드 : 실제 .class파일이 생성되고 함수 호출까지 정상 작동합니다.
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;
}
}
/ 2 3 4 5 6 7 8
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';
/ 2 3 4
Function 'FIND_MAX' created.
SQL> select find_max(4,60) from dual;
FIND_MAX(4,60)
--------------
60
1 row selected.
SQL
복사
•
2 번 노드 : 실제 .class파일은 생성되지 않고 함수 오브젝트들 생성까지만 작동합니다.
⇒ 이 상태에서 정상적으로 자바 오브젝트를 사용하기 위해서는 1 번 노드의 .class 파일을 복사하여 해결가능하며, 재기동하지 않아도 됩니다.
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;
}
}
/ 2 3 4 5 6 7 8
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';
/
2 3 4
Function 'FIND_MAX' created.
SQL>
SQL> select find_max(4,60) from dual;
TBR-150008:Invalid class name. - SimpleMath
at line 1, column 2 of null:
select find_max(4,60) from dual
SQL
복사
공유 스토리지 영역일 경우
1 번, 2 번 노드 모두 정상적으로 오브젝트 생성하고, 해당 오브젝트 사용이 가능합니다.