2014년 3월 25일 화요일

[구로오라클]오라클 패키지 소스 숨기기(oracle package body wrapping, package wrap),[오라클교육/오라클/ORACLE강좌/오라클교육잘하는곳/오라클교육추천/ORACLE실무교육/ORACLE/ORACLE교육/ORACLE학원/오라클실무교육]

오라클 패키지 소스 숨기기(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
W2mwgKQ=

댓글 없음:

댓글 쓰기