我们在Oracle存储过程中所包含的商业秘密,有时不愿意被第三方人员看到,可以通过对存储过程加密来实现。
有两种加密存储过程的方法:使用wrap工具
首先创建一个名称为test1.sql的文件:
CREATE OR REPLACE FUNCTION get_date_string RETURN VARCHAR2 AS BEGIN RETURN TO_CHAR(SYSDATE, ‘DD-MON-YYYY’); END get_date_string; / |
它保存在D盘根目录。
到命令行下执行wrap iname=d:/test.sql
D:/>dir test* 驱动器 D 中的卷是 D 卷的序列号是 15C2-D261 D:/ 的目录 2009-12-26 16:35 138 test.sql 1 个文件 138 字节 0 个目录 2,052,046,848 可用字节 D:/>wrap iname=d:/test.sql PL/SQL Wrapper: Release 10.2.0.1.0- Production on 星期六 12月 26 16:36:01 2009 Copyright (c) 1993, 2004, Oracle. All rights reserved. |
Processing d:/test1.sql to test1.plb D:/>dir test* 驱动器 D 中的卷是 D 卷的序列号是 15C2-D261 D:/ 的目录 2009-12-26 16:36 350 test.plb 2009-12-26 16:35 138 test.sql 2 个文件 488 字节 0 个目录 2,052,046,848 可用字节 |
会在D盘根目录下生成了一个test.plb文件
我们查看文件中的内容:
CREATE OR REPLACE FUNCTION get_date_string wrapped a000000 354 abcd abcd abcd abcd abcd abcd abcd abcd abcd abcd abcd abcd abcd abcd abcd 8 71 ae P29RDhRZX0orO0ED/mMF8i12Glkwg8eZgcfLCNL+XlquYvSuoVah8JbRPpdHDOrnwLK9spte 58d0wDO4dGUJuHSLwMAy/tKGCamhAs7G1hohrO/WTHaEcTKOd0xx9RBzc/XvN2dM6+zZPXLp r1UqFBwU/Sx2010pwUjXpqZCvywG / |
通过命令行连接数据库,执行@d:test.plb
连接到:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL> @d:test.plb
函数已创建。
SQL>
提示函数已进创建;配置结束;
在plsql中查看,发现这个函数为:/* Source is wrapped */