본문 바로가기
DATABASE/DB study

plug-in

by 개폰지밥 2019. 2. 20.
반응형

plug-in 설치하는 방법 (oracle 기준)

1) 모듈 라이브러리 설치

읽어올 수 있는 경로에 라이브러리가 존재 해야 한다.

라이브러리(lib)는 운영체제에 따라 파일 유형이 다르다.

- 윈도우: .dll 리눅스:.so

<.dll>

<.so>


2) 모듈 경로 설정

라이브러리를 저장한 위치를 경로 설정해줘야 한다.

- 윈도우: [환경변수] -> [시스템 변수]의 "Path"에 경로 설정

보통 C드라이브 아래 폴더를 만들어 많이 저장한다.

경로는 모듈이 있는 폴더에 가서 창을 클릭하면 경로 위치를 복사할 수 있다. 복사 한 다음 환경변수의 path 붙여넣어주기 하면 된다.

- 리눅스: 구동 계정의 .bash_profile의 "LD_LIBRARY_PATH"에 모듈 경로 설정하기

보통 /usr/local/에 폴더를 만들어 많이 저장한다.


3) 환경변수(conf) 설정

conf 파일의 위치는 보통 아래와 같다. 

- 윈도우: C:\ProgramData  (ProgramData가 안보일 경우 폴더 옵션에서 숨김 파일을 보도록 설정을 바꾼다.)

- 리눅스: /usr/local/

conf는 보통 ip주소, 라이센스 경로, ip 주소 정도 수정이 된다.


4) JAVA Interface 설치

JAVA Interface 설치 하기전에 JNI과 script를 알아야 한다.

*JNI

jni 뜻을 찾아보면 아래와 같이 위키백과가 설명해준다.

자바 네이티브 인터페이스(Java Native Interface, JNI)는 자바 가상 머신(JVM)위에서 실행되고 있는 자바코드가 네이티브 응용 프로그램(하드웨어와 운영 체제 플랫폼에 종속된 프로그램들) 그리고 C, C++ 그리고 어샘블리 같은 다른 언어들로 작성된 라이브러리들을 호출하거나 반대로 호출되는 것을 가능하게 하는 프로그래밍 프레임워크이다.

jni의 이해를 돕자면 자바 이외의 다른 언어들로 작성된 라이브러리들을 사용할 수 있게 해주는 역할이라고 생각하면 될 것 같다.

<자바클래스 퍼블리싱 방법 (예시)>

 # 여러 DB 계정에서 사용시

loadjava -user 유저명/비밀번호 -grant public -resolve 이름JNI.class 이름JNIEx.class 

*public: 다른 계정에서도 사용 권한 허용

# 생성 DB계정에서만 사용시

loadjava -user 유저명/비밀번호 -resolve 이름JNI.class 이름JNIEx.class

- 윈도우: cmd 창을 키고 cd(이동 명령어)와 dir(파일 목록보는 명령어) 명령어를 사용해서 script 파일이 있는 곳으로 이동한다.

ex) cd ..은 상위 폴더로 이동하는 명령어이다.

- 리눅스: 윈도우와 마찬가지로 cd와 ls(파일 목록 보는 명령어)를 이용해서 script로 이동한 다음에 loadjava 명령어를 실행한다.

[참고] DB 계정 생성

create user 유저명 identified by 비밀번호 

grant dba to 유저명


5) 자바클래스 퍼블리싱 여부 확인

select object_name, object_id, status from user_objects 

JNI과 JNIEx가 VALID(유효)한지 확인한다.


6) 권한 seq 확인하기 & 라이브러리 권한 설정하기

( 일반적으로 10g = 73, 11g=95 )

권한을 주기위해서는 seq를 알아야 한다. seq 확인하는 방법은 아래와 같다.

%는 RuntimePermission과 관련된 것들을 조회해주세요 라고 이해하면 될 것 같다.

 select seq, kind, grantee, name, enabled from dba_java_policy where name like '%java.lang.RuntimePermission%';


명령어를 이용해서 loadLibrary의 SEQ번호를 기억한다.

생성한 계정에 라이브러리 권한을 허용해준다. (95)에는 위에서 확인한 SEQ 번호를 넣어준다.

 exec dbms_java.disable_permission(95); --우선 허용해주기 위해서 disable 시켜주기

exec dbms_java.grant_permission

('유저명', 'SYS:java.lang.RuntimePermission', 'loadLibrary.이름DBJni, '');

exec dbms_java.enable_permission(95); -- 허용해주기


7) Package 설치 (오라클 기준)

패키지 설치 하기 전에 script과 @의 개념을 잠깐 알고가자.

*script

script는 DB에 따라 다르다. lib 파일의 경우에는 운영체제에 따라 달랐지만, script는 DB의 종류에 따라 다르다. script 파일에 대해서 이해를 했으면 script 파일을 이용하여 패키지 생성하면 된다.

*@

  • SQL 파일에 저장된 내용을 실행하는 명령어이다.
  • 확장자가 .sql인 파일에 저장되어 있는 쿼리문을 실행시키기 위해 사용한다.
@를 이용해서 script명.sql을 실행시키면 된다
@스크립트명.sql   이렇게 하면 package가 설치된다.

8) 결과 확인하기

select문과 dual을 이용하여 패키지에 있는 함수들이 잘 동작되고 있는지 확인하면 끝이다.

여기서 dual은 가상의 테이블을 말한다. 예를 들어 시간을 알고 싶을 때 dual이라는 가상의 테이블을 이용하여 시간을 확인할 수 있다.

*dual


- 끝-




반응형

댓글