- 아래 스크립트를 서버에 저장한다 - 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=
*/
'Database > PLSQL' 카테고리의 다른 글
108 - [Oracle PL/SQL] Dependencies - Direct/Indirect (0) | 2024.05.15 |
---|---|
107 - [Oracle PL/SQL] Dependencies - Introduction (0) | 2024.05.15 |
105 - [Oracle PL/SQL] Managing Code - dbms_ddl (0) | 2024.05.15 |
104 - [Oracle PL/SQL] Managing Code - Obfuscation (0) | 2024.05.15 |
103 - [Oracle PL/SQL] Managing Code - plsql_ccflags 예시 (0) | 2024.05.15 |