oracle提供了wrap工具來加密包括procedure、function、package等的PL/SQL源代碼
wrap的執行在CMD命令行環境下
語法:
wrap iname=input_file [oname=output_file]
將C:\p1.sql加密成p1
C:\>wrap iname=p1.sql oname=p1
PL/SQL Wrapper: Release 11.2.0.1.0- 64bit Production on 星期五 10月 25 08:45:22
Copyright (c) 1993, 2009, Oracle. All rights reserved.
Processing p1.sql to p1.plb
加密後使用 SQL> @加密文件名 編譯到庫中,查看的時候顯示已經被加密
比如在pl/sql developer查看是顯示 /* Source is wrapped */
C:\>sqlplus /nolog
SQL*Plus: Release 11.2.0.1.0 Production on 星期五 10月 25 08:57:46
Copyright (c) 1982, 2010, Oracle. All rights reserved.
SQL> conn scott/tiger
已連接。
SQL> @p1.plb
過程已創建。
SQL> select * from t;
未選定行
SQL> call p1();
調用完成。
SQL> select * from t;
X
----------
1
2
3
4
5
6
7
8
9
10
已選擇10行。
SQL>select text from user_source where name='P1'
PROCEDURE P1 wrapped
a000000
354
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
7
7f be
WI2qPaUYda4qsdTzC4y1G1wU4dswg6RfLZ7WfI7p2sHVuehM29jJCU6JWyq9s2exy8vmLQ7M
5OQ5xMcoaIY0eaFbrrjTgRar/DHnDgMcdN/IFp6F05b2TJum7SaytjcHNyGx9MIBVcFi4JOG
KPPBwRJHEodMcooipjiR69Zc7JHSkAlm9yPk+5qVLJA=
在oracle中,對象的源代碼是可以從user_source數據字典中找到。
user_source和all_source
SQL>select type from all_source group by type
1 PROCEDURE
2 PACKAGE
3 PACKAGE BODY
4 LIBRARY
5 TYPE BODY
6 TRIGGER
7 FUNCTION
8 JAVA SOURCE
9 TYPE