DBA_OBJECTS视图存储了关于PACKGE,PACKGE BODY,PROCEDURE, FUNCTION, TRIGGER, JAVA CLASS, JAVA RESOURCE, 和 JAVA DATA以及其他的信息。DBA_OBJECTS中的STATUS指出了对象在上次编译的时候是否出现了错误。它将被设置成‘VALID’或者‘INVALID’。一个包可能会变得无效,因为它的引用有可能被再编译。你可以利用SQL DDL语句在没有源代码的情况下重新编译一个包:alter function FOO compile;
alter java source FOO compile;
alter java class FOO compile;
alter procedure FOO compile;
alter package FOO compile;
alter package FOO compile body;
alter trigger FOO compile body; 你的这个脚本就是查询一个用户模式下所有无效的OBJECT,生成重新编译这些OBJECT的脚本(TEMP.SQL
),然后在执行此脚本重新编译无效OBJECT