停掉oracle的存储过程?如何将存储过程的代码隐藏
一、oracle***如何将存储过程的代码隐藏
可以例用Oracle自带的Wrap工具实现,此工具在$ORACLE_HOME/BIN目录下,具体如下
1、设置字符集环境变量
set NLS_LANG=CHINESE_CHINA.ZHS16GBK
2、创建一个存储过程文件
在E:\下创建test.sql文件,内容如下:
create or replace procedure test1(i in number) as
begin
dbms_output.put_line('输入参数是'||to_char(i));
end;
3、加密
c:\> cd%ORACLE_HOME%\BIN
c:\>wrap iname=e:\test1.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 test1.sql to test1.plb
4、运行test1.plb
sqlplus/nolog
SQL>conn TEST/TEST@db01
SQL>@e:\a.plb
过程已创建。
5、运行存储过程
SQL> set serveroutput on
SQL> execute test1(1);
输入参数是1
PL/SQL过程已成功完成。
6、查看存储过程的代码
SQL> select name,text from all_source where type='PROCEDURE' and name='TEST1';
结果:看不到其原码
二、oracle存储过程中断表空间占用
在oracle存储过程中断表空间占用的情况下,可以使用以下措施:
1、释放占用的表空间:存储过程中已经完成了需要占用表空间的*作,可以在存储过程执行完成后及时关闭相关的游标、释放连接,并且手动释放不再需要的表空间,以迅速释放空间和提高服务器性能。
2、避免对大量数据进行*作:在存储过程中,尽量避免一次性对大量数据进行*作,这样会占用较多的表空间。可以使用循环*作等方法控制每次*作的数据量,减轻表空间占用压力。
3、优化查询性能:通过优化sql查询语句或者增加索引等方法,优化存储过程中的查询*作,以减少占用表空间的时间和空间。
4、定期清理数据库:在存储过程的执行过程中,定期清理数据库中的无用数据和垃圾数据,可以有效减少表空间的占用量。总的来说,可以通过对存储过程的优化、表空间的释放、数据查询的优化和数据库的清理等方面来降低oracle存储过程中断表空间占用的问题。
三、oracle的存储过程不能使用drop语句吗
存储过程里面,一般只写 DML的语句。
也就是基本的 SELECT. INSERT, DELETE, UPDATE这一类的语句。
如果你要在存储过程里面,执行 DDL语句。
也就是 CREATE, ALTER, DROP这一类的语句。
那么需要使用动态 SQL来处理。
也就是
EXECUTE IMMEDIATE('CREATE TABLE test( id int)');
EXECUTE IMMEDIATE('DROP TABLE test');
这样的方式来处理。
对于 DDL语句,这类语句,如果成功了,就生效了,不能回滚的。
也就是
当你 Drop Table某个表的时候,执行成功了,表就被删除了。
不需要你 Commit的。
你也无法Rollback,然这个表不删除了。
四、ORACLE的存储过程问题
在网上搜了某帅哥的解决方案,希望对你有用!你的这个错误,我也没遇到过,也学习下!
ORA-29282 UTL_FILE不能用,File handle does not exist.可如下*作:
1.创建directory(电脑相应的路径一定要存在,并且注意要用大写来创建,它会区分大小写)
如:create directory utl_file_dir as'd:\temp\utl_file';
2.授予权限
如:grant read,write on directory utl_file_dir to用户;
3.可查看是否生成:
如: select* from all_directories;
4.如对所设的directory不满意,可对其进行取消,
如: drop directory utl_file_dir;