기술 정보
home
채널 소개
home

Tibero Active Cluster 이중화 구성 환경에서 JAVA CALSS 사용 가이드

문서 유형
기술 정보
분야
설치
키워드
Tibero Active Cluster
JAVA CALSS
1 more property

개요

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 번 노드 모두 정상적으로 오브젝트 생성하고, 해당 오브젝트 사용이 가능합니다.