注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

天边云E家 shaoruisky

IT博文共享,知识的海洋

 
 
 

日志

 
 

【转载】Oracle存储过程深度历险  

2013-06-14 10:00:17|  分类: oracle |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
本文转载自滔滔江水《Oracle存储过程深度历险》

这个题目有点夸大其词了,呵呵,只是鲜明的题目总是容易引起人们的注意。其实我想写的只是如何查看Oracle数据库里面存储过程的源代码以及如何加密而已。下面所述方法适用于Oracle PROCEDURETRIGGERFUNCTION等代码对象。

Oracle存储过程源代码是如何存储的?

用一些图形化的界面连接数据库可以很容易的查看到存储过程的源代码,可是在命令行(如SqlPlus)模式下如何查看呢?在Oracle的诸多元数据字典表里面,有几个叫all_source(当然也有dba_sourceuser_source),里面记录了源代码。

假设建立了这样一个存储过程:

create or replace procedure HelloWorld as

begin

dbms_output.put_line('Hello World');

end;

SqlPlus下键入sql

select line,text from user_source where type='PROCEDURE' and

这样就可以看到存储过程的源代码了。

Oracle存储过程的加密

辛苦做的存储过程被别人一览无遗,劳动成果就这样被别人窃取,总是不舒服的。那么,有没有方法加密它呢?答案是肯定的,照着下面的步骤做下去就可以了。

1、设置NLS_LANG变量:

  D:\>set NLS_LANG=AMERICAN_AMERICA.USACII7

  D:\>set NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P1

   D:\>set NLS_LANG=CHINESE_CHINA.ZHS16GBK

可以直接打set命令可以查看环境变量。

2、把存储过程源代码存到一个文件里面

例如把上面的HelloWorld存储过程保存成D:\HelloWorld.sql文件。

3、使用OracleWrap工具

在命令行模式下输入:

D:\>wrap iname=HelloWorld.sql oname=HelloWorld.plb

也可以只写wrap iname=HelloWorld.sql,默认是处理后的文件名是和源文件名相同,后缀是plb

看到以下结果:

PL/SQL Wrapper: Release 10.2.0.1.0- Production on 星期三 12 27 15:32:51 2006

Copyright (c) 1993, 2004, Oracle.  All rights reserved.

Processing HelloWorld.sql to HelloWorld.plb

打开HelloWorld.plb,可以看到源代码都已经加密了:

create or replace procedure HelloWorld wrapped

a000000

354

abcd

abcd

abcd

abcd

abcd

abcd

abcd

abcd

abcd

abcd

abcd

abcd

abcd

abcd

abcd

7

4a 81

tsfyxgVrUCFX0Ir5zIZlWMEoh3owg5nnm7+fMr2ywFylWtf6+ihylpehzLh0i8DAMv7ShsBS

m7JK/iiyveeysx0GMCyuJOqyMkvyREsJMi72RNHqJB/20TmmYKWUXg==

 

/

4、运行plb文件

SQL> @d:\HelloWorld.plb

创建存储过程就可以了。

5、运行,查看结果

SQL> set serveroutput on

SQL> execute HelloWorld

Hello World

 

PL/SQL 过程已成功完成。

6、查看加密效果

SQL> select line,text from user_source where type='PROCEDURE' and

可以看到代码都是加密了的。

 

如果要加密存储过程,一定要注意保存源文件,因为到目前为止还没有办法解密(Oracle公司除外)。

 

  评论这张
 
阅读(151)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2016