日期:2014-05-17  浏览次数:20666 次

如果批量编译失效存储过程
现在发现有大量存储过程失效,不可能一个一个编译,有什么办法可以批量编译?

------解决方案--------------------
如果在服务器本机上,可以在sqlplus中以sysdba身份登陆执行rdbms\admin\目录下的utlrp.sql脚本。也可以自己写个脚本,从user_objects中查出所有invalid的存储过程名,然后用动态sql对那些过程重新编译(alter procedure XXX recompile)。

------解决方案--------------------
select 'ALTER PROCEDURE '||object_name|| ' COMPILE; ' as s from user_objects where object_type= 'PROCEDURE ' and status <> 'VALID ';

把得到的结果拿来执行就可以了.