一、运行时自动重新编译
当用户连接数据库并执行(直接或者间接)一个失效的程序单元时,数据库自动尝试重新编译。
二、手工重编译
alter 。。。compile 【reuse settings】
如果执行包的重编译,可以使用:
alter package name compile body 平【reuse settings】
三、模式级别重编译
1、utlip.sql
把整个数据库范围内的全部pl/sql代码和视图都失效然后重编译
2、utlrp.sql
以穿行的方式重编译所有失效对象,适用于单处理器。
3、utlrcmp.sql
以并行方式重编译所有对象
4、utl_recomp包
该包包含两个过程:
recomp_serial --以穿行方式执行对某个模式的失效对象的重编译
recomp_parallel --以并行方式执行对某个模式的失效对象的重编译。
--以上四种方式均需要sysdba权限
5、dbms_utility.compile_schema