每次数据库升级之后,都需要对库中的对象进行重新编译一下。下面整理出了一个脚本,只需要执行一下就能批量编译这些失效的对象。需要注意的是:因权限问题,最好是选择sys用户来执行这个脚本,如是plsql developer中执行,记得选择“ALL USERS”
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
[oracle@oracle ~]$ cat check_compile.sql set heading off ;
set feedback off ;
set echo off ;
Set lines 999;
Spool run_invalid.sql select 'alter ' ||decode(object_type, 'VIEW' , 'VIEW' , 'TRIGGER' , 'TRIGGER' ,
'PROCEDURE' , 'PROCEDURE' , 'FOUNCTION' , 'FUNCTION' ,
'PACKAGE' , 'PACKAGE' , 'PACKAGE BODY' , 'PACKAGE' , 'MATERIALIZED VIEW' )
|| ' ' ||owner|| '.' ||object_name|| ' compile ' || ';' from dba_objects
where status like 'INV%' ;
spool off ;
set heading on ;
set feedback on ;
set echo on ;
@run_invalid.sql |
本文转自 青苗飞扬 51CTO博客,原文链接:http://blog.51cto.com/qingmiao/1983274