WRAP工具的使用(代码包装)

本文介绍如何使用WRAP工具对Oracle中的函数、过程等进行封装,以实现源代码的隐藏。通过具体示例展示了封装前后代码的区别,并说明了哪些类型的数据库对象可以被封装。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

WRAP工具的使用(代码包装)

 
    通过使用wrap对创建的数据库源代码进行封装,隐藏源代码的目的。 请看以下测试:
Microsoft Windows XP [版本 5.1.2600]
(C) 版权所有 1985-2001 Microsoft Corp.
 
C:/Documents and Settings/hawk>sqlplus /nolog
 
SQL*Plus: Release 10.1.0.2.0 - Production on 星期四 8月 10 21:36:47 2006
 
Copyright (c) 1982, 2004, Oracle. All rights reserved.
 
SQL> connect system/system@ora10g
已连接。
SQL> create or replace function get_sysdate return date
 2 as
 3 begin
 4      return sysdate;
 5 end;
 6 /
 
函数已创建。
 
SQL> select get_sysdate from dual;
 
GET_SYSDATE
--------------
10-8月 -06
 
SQL> select T.TEXT from all_source t where t.name='GET_SYSDATE';
 
TEXT
--------------------------------------------------------------------------------
 
function get_sysdate return date
as
begin
    return sysdate;
end;
 
SQL> drop function get_sysdate;
 
函数已删除。
 
SQL> exit
从 Oracle Database 10g Enterprise Edition Release 10.1.0.2.0 - Production
With the Partitioning, OLAP and Data Mining options 断开
 
--这里将创建函数的语句保存到d:/get_sysdate.sql.然后继续执行以下操作:
 
C:/Documents and Settings/hawk>wrap iname=d:/get_sysdate.sql oname=d:/test.sql
 
PL/SQL Wrapper: Release 10.1.0.2.0- Production on 星期四 8月 10 21:41:15 2006
 
Copyright (c) 1993, 2004, Oracle. All rights reserved.
 
Processing d:/get_sysdate.sql to d:/test.sql
 
C:/Documents and Settings/hawk>sqlplus /nolog
 
SQL*Plus: Release 10.1.0.2.0 - Production on 星期四 8月 10 21:41:19 2006
 
Copyright (c) 1982, 2004, Oracle. All rights reserved.
 
SQL> connect system/system@ora10g
已连接。
SQL> @d:/test.sql
 
函数已创建。
 
SQL> show errors
没有错误。
SQL> select get_sysdate from dual;
 
GET_SYSDATE
--------------
10-8月 -06
 
SQL> select text from all_source where name='GET_SYSDATE';
 
TEXT
--------------------------------------------------------------------------------
 
function get_sysdate wrapped
a000000
354
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
 
TEXT
--------------------------------------------------------------------------------
 
abcd
abcd
abcd
abcd
abcd
abcd
abcd
8
46 71
cftrC1IR/5jUgJf6jdTfMVZR0HIwg8eZgcfLCNL+Xri/svQoSnSfUnRSXOfAsr2ym16mA752
1pRTbnFVAHOOU46ppsVbXCfXQ/zB4NemptBF818=
 
--以上可以看出, 代码已经被做封装加密处理,看不到源代码。
 
SQL>
SQL>
SQL> exit
从 Oracle Database 10g Enterprise Edition Release 10.1.0.2.0 - Production
With the Partitioning, OLAP and Data Mining options 断开
 
C:/Documents and Settings/hawk>
 
注意:并不是所有的创建对象的语句都可以被封装,以下创建语句可以被封装:
CREATE [OR REPLACE] FUNCTION function_name
CREATE [OR REPLACE] PROCEDURE procedure_name
CREATE [OR REPLACE] PACKAGE package_name
CREATE [OR REPLACE] PACKAGE BODY package_name
CREATE [OR REPLACE] TYPE type_name AS OBJECT
CREATE [OR REPLACE] TYPE type_name UNDER type_name
CREATE [OR REPLACE] TYPE BODY type_name
其他的如创建表结构、建视图结构、创建触发器等创建语句都不可以被封装,wrap会将其原封不动地输出到输出文件中。
    封装包和类型的时候, 只封装包体,对象体,不封装包头和对象头
封装过程是不可逆的,如果需要修改封装的对象, 需要修改源代码,然后重新封装,再到数据库中编译。
Wrap不封装触发器的源代码,如果想隐藏触发器的工作逻辑,可以在触发器中执行经过封装的存储过程,达到隐藏触发器代码的目的。
 
--完--
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值