转帖:http://www.aixchina.net/Question/26869-397020
原文如下:
SET feedback OFF
SET heading OFF
SET linesize 1000
SET pagesize 0
SET pause OFF
SET trimspool ON
SET verify OFF
spool tmp.sql;
--组装SQL语句
SELECT 'alter '||object_type||' '||owner||'.'||object_name||' compile;'
FROM all_objects
WHERE status = 'INVALID'
AND object_type in
('FUNCTION','JAVA SOURCE','JAVA CLASS','PROCEDURE','PACKAGE','VIEW','TRIGGER');
--组装SQL语句
SELECT 'alter package '||owner||'.'||object_name||' compile body;'
FROM all_objects
WHERE status = 'INVALID'
AND object_type = 'PACKAGE BODY';
spool OFF;
--执行脚本
@tmp.sql
最后请注意登录ORACLO的权限
--------------------------------------
尝试了下很实用
vi 一个文件‘ORACLE批量编译无效对象.sql’写进脚本内容
sqlplus > @ORACLE批量编译无效对象.sql
之后生成一个tmp.sql脚本,再执行
sqlplus > @tmp.sql