본문 바로가기

Database/PLSQL

106 - [Oracle PL/SQL] Managing Code - Wrapper Utility

 

 

 

 

 

 

 

 

 

 

  • 아래 스크립트를 서버에 저장한다 - test.sql
create table table_1
( id number,
  name varchar2(100)
);

insert into table_1 values (1,'nader ali');
insert into table_1 values (2,'khaled rami');
insert into table_1 values (3,'naser hassan');
insert into table_1 values (4,'ameen hadi');

create or replace procedure insert_table_1
(p_id number, p_name varchar2)
is
begin
insert into table_1 values (p_id,p_name);
commit;
end;

 

 

 

  • 유틸리티를 이용하여 sql 파일을 암호화
-- 오라클 서버에서 아래 명령어 실행, test.sql 파일이 있는 폴더에서 실행
[oracle@test Documents]$ wrap iname=test.sql

PL/SQL Wrapper: Release 19.0.0.0.0 - Production on Tue May 14 22:12:47 2024
Version 19.3.0.0.0

Copyright (c) 1982, 2019, Oracle and/or its affiliates.  All rights reserved.

Processing test.sql to test.plb
-- 실행완료


-- 실행결과로 파일이 하나 생성됨, test.plb
[oracle@test Documents]$ ll
total 8
-rw-r--r-- 1 oracle oinstall 575 May 14 22:12 test.plb
-rw-r--r-- 1 oracle oinstall 380 May 14 22:11 test.sql


-- 새로 생성된 파일 내용은 아래와 같다, 프로시져, 함수, 패키지 등 일부만 암호화된다
-- 그래서 테이블 생성문이나 인서트문은 평문으로 보인다
[oracle@test Documents]$ cat *.plb
create table table_1
( id number,
  name varchar2(100)
);
insert into table_1 values (1,'nader ali');
insert into table_1 values (2,'khaled rami');
insert into table_1 values (3,'naser hassan');
insert into table_1 values (4,'ameen hadi');
create or replace procedure insert_table_1 wrapped
a000000
1
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
7
79 ba
sOOlsHJt9QtsC+FOiCB06SjL2vYwg2xHAJkVfC+pOMH4lHhhUGPiWJtSfTXHvZzbKhb1FuPW
M7WMd3MQGdj6XhHyU+0iHhK7+HMIcfh0hLl2aaP1GraL0d/TGdiSCj1O53HdswJEVJ7e6afs
S6PEaU+qMSVNjy11+fUhj15fcbLINh2wllp8yr4=

/
[oracle@test Documents]$

 

 

 

  • 스크립트 실행 방법
--sqlplus 상에서 실행해야 한다, 터미널상에서 바로 실행하면 에러 발생
[oracle@test Documents]$ @test.plb
bash: @test.plb: command not found...


--sqlplus 로그인,
[oracle@test Documents]$ sqlplus hr/hr@orclpdb

SQL*Plus: Release 19.0.0.0.0 - Production on Tue May 14 22:16:00 2024
Version 19.3.0.0.0

Copyright (c) 1982, 2019, Oracle.  All rights reserved.

Last Successful login time: Tue May 14 2024 21:29:34 +01:00

Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0


--실행하기, 위치를 명시하면 좋고, 아니면 해당 폴더에서 sqlplus 를 실행하면 된다,
SQL> @test.plb

Table created.

1 row created.
1 row created.
1 row created.
1 row created.

Procedure created.
-- 스크립트 내용이 정상적으로 실행됨

SQL>

 

 

 

  • 스크립트 실행결과 확인
select * from table_1;
/*
        ID NAME                                                                                                
---------- ----------------
         1 nader ali       
         2 khaled rami     
         3 naser hassan    
         4 ameen hadi  
*/


exec insert_table_1 (5,'ahmed alali');


-- 소스보기, 암호화되어 있음
select line,text from user_source
where name=upper('insert_table_1');
/*
procedure insert_table_1 wrapped
a000000
1
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
7
79 ba
sOOlsHJt9QtsC+FOiCB06SjL2vYwg2xHAJkVfC+pOMH4lHhhUGPiWJtSfTXHvZzbKhb1FuPW
M7WMd3MQGdj6XhHyU+0iHhK7+HMIcfh0hLl2aaP1GraL0d/TGdiSCj1O53HdswJEVJ7e6afs
S6PEaU+qMSVNjy11+fUhj15fcbLINh2wllp8yr4=
*/