오라클 패키지 소스 숨기기(oracle package body wrapping, package
wrap),[오라클교육/오라클/ORACLE강좌/오라클교육잘하는곳/오라클교육추천/ORACLE실무교육/ORACLE/ORACLE교육/ORACLE학원/오라클실무교육]
wrap명령을 이용하여 PLSQL 소스 코드를 숨길 수 있는데 wrap 유틸리티 또는 DBMS_DDL 오라클 제공 패키지를 이용하여
사용가능 하다.
wrap 유틸리티는 SQL*Plus 스크립트와 같은 단순 소스 파일에 사용되고 DBMS_DDL 패키지는 PLSQL의 create
procedure로 만든 Program unit에 사용될 수 있다.
wrap된 PLSQL 소스코드는 export/import등으로 옮겨 질 수 있지만 볼 수는 없다.
소스파일은 보통 .sql 확장자, wrap을 이용하게 되면 .plb 로 확장자 파일이 생긴다. 이 파일은 wrap유틸리티에 의해 pl/sql의 소스코드가
암호화(encrypt)된 것을 의미하며 텍스트 지만 PLSQL 소스코드 형태는 아니다.
- 특징
wrap명령은 패키지 명세에는 사용불 가하며, 패키지 바디에 사용가능하다.
wrap코드는 package body 작성 후 실행한다.
trigger 소스코드는 wrapping이 불가능 하다.
[실습]
먼저 테스트용 프러시저를 하나 만들자
SQL>conn scott/tiger
SQL> edit onjwrap.sql
[아래와 같은 내용으로]
CREATE PROCEDURE onjwrap IS
TYPE emp_tab IS TABLE OF emp%ROWTYPE INDEX BY PLS_INTEGER;
emps emp_tab;
BEGIN
SELECT * BULK COLLECT INTO emps FROM emp;
FOR i IN 1..5 LOOP
DBMS_OUTPUT.PUT_LINE('Emp Id: ' || emps(i).empno || 'Ename : ' ||
emps(i).ename);
END LOOP;
END;
/
SQL> host
Microsoft Windows XP [Version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.
C:\Documents and Settings\A>wrap iname=onjwrap.sql
PL/SQL Wrapper: Release 11.2.0.1.0- Production on 토 3월 08 10:14:28
2014
Copyright (c) 1993, 2009, Oracle. All rights reserved.
Processing onjwrap.sql to onjwrap.plb
C:\Documents and Settings\A>exit
SQL> @onjwrap.plb
프로시저가 생성되었습니다.
SQL> set serveroutput
on
SQL> call onjwrap();
Emp Id: 777Ename : 오라클자바
Emp Id: 3334Ename : Onj3
Emp Id: 1114Ename : Onj1
Emp Id: 2224Ename : Onj2
Emp Id: 8886Ename : Onj1
호출이 완료되었습니다.
SQL> set pagesize 40
SQL> select text from user_source where name = 'ONJWRAP';
TEXT
------------------------------------------------------------------------------
PROCEDURE onjwrap wrapped
a000000
34e
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
7
115 12c
SUdlrswe815xckcSvA4L4Kl9siEwg0zcLUoVfHQBueo0RJRITdu4mZBaHiuzY1KJGqzclCUt
ysxQYsSlCMFddUuRMT9yuzH/x4TNfb3+Q5L4xz9nB+Hjt+9Qj4swaaxnGKi4nEsNwQuLDXkp
NiqvWHz2/SZJD21Un+HANHb85sxkO2k3dCrzLGmMOuZqG9BRQ6pcwUJaTMIptISZB0xcEBV8
mGZCYSfngtCz8C3xbvBhoD4pG0+qu8wGOkcr/e07GqPcZ6HZOp+v2nkoHXlOxmHXW/zmRSOB
댓글 없음:
댓글 쓰기