存储过程怎样加密?

derris 2002-09-13 08:14:39
在数据库中,触发器和存储过程等脚本怎样能够防止别人(别人维护的数据库)看到.
...全文
25 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
IronPromises 2002-09-13
  • 打赏
  • 举报
回复
1樓提供的答案的出處為:

http://www.oradb.net/object/procedure_004.htm
sbm 2002-09-13
  • 打赏
  • 举报
回复
存储过程、包可以加密,触发器不能够加密,你可以在触发器中调用加密过的存储过程。(加密存储过程见楼上的)
bzszp 2002-09-13
  • 打赏
  • 举报
回复
可以隐藏:
用 wrapper 实现:
wrap iname=input_file oname=output_file
input_file 是建立过程的脚本文件
$ wrap iname=test.sql oname=target.sql

在sqlplus 中执行target.sql
yuhualong 2002-09-13
  • 打赏
  • 举报
回复
实现方法:
1、

D:\>set NLS_LANG=AMERICAN_AMERICA.USACII7



D:\>set NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P1



D:\>set

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



2、

在D:\下创建a.sql文件,内容如下:

create or replace procedure test1(i in number) as

begin

dbms_output.put_line('输入参数是'||to_char(i));

end;



3、

D:\>wrap iname=a.sql



PL/SQL Wrapper: Release 8.1.7.0.0 - Production on Tue Nov 27 22:26:48 2001



Copyright (c) Oracle Corporation 1993, 2000. All Rights Reserved.



Processing a.sql to a.plb



4、

打开a.plb,现在它的内容如下:

create or replace procedure test1 wrapped

0

abcd

abcd

abcd

abcd

abcd

abcd

abcd

abcd

abcd

abcd

abcd

abcd

abcd

abcd

abcd

3

7

8106000

1

4

0

8

2 :e:

1TEST1:

1I:

1NUMBER:

1DBMS_OUTPUT:

1PUT_LINE:

1输入参数是:

1||:

1TO_CHAR:

0



0

0

1f

2

0 1d 9a 8f a0 b0 3d b4

55 6a :2 a0 6b 6e 7e :2 a0 a5

b b4 2e a5 57 b7 a4 b1

11 68 4f 17 b5

1f

2

0 3 4 1d 19 18 25 15

2a 2e 32 36 3a 3d 42 45

49 4d 4e 50 51 56 57 5c

5e 62 64 70 74 76 7f

1f

2

0 1 b 11 16 :2 11 10 :3 1

:2 d 16 22 24 2c :2 24 :2 16 :a 1



1f

2

0 :9 1 :d 3 :2 2 :3 1 4 :2 1

81

4

:4 0 1 :a 0 1b

1 :4 0 5 :2 0

:2 3 :3 0 2 :7 0

5 4 :3 0 7

:2 0 1b 2 8

:2 0 4 :3 0 5

:3 0 a b 0

6 :4 0 7 :2 0

8 :3 0 2 :3 0

7 f 11 9

e 13 :3 0 :2 c

15 :2 0 17 10

1a :3 0 1a 0

1a 19 17 18

:6 0 1b :2 0 2

8 1a 1d :2 0

1 1b 1e :8 0



13

4

:3 0 1 3 1

6 1 10 2

d 12 1 14

1 16 2 16

1c

1

4

0

1d

0

1

14

1

2

0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0

0 0 0 0

2 0 1

3 1 0

0



/



5、运行a.plb

SQL> @d:\a.plb



过程已创建。



6、运行存储过程

SQL> set serveroutput on

SQL> execute test1(1);

输入参数是1



PL/SQL 过程已成功完成。



7、查看存储过程的代码

SQL> select name,text from all_source where type='PROCEDURE' and name='TEST1';


17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧