对数据库失效对象的编译

如何查看oracle数据库的失效对象
select object_name,status from dba_objects where owner = 'username'
手动编译执行
SQL> alter function func_name compile;

函数已更改。

SQL> alter procedure PROCEDURE_NAME compile;

过程已更改。

SQL> alter package PACKAGE_NAME compile body;

程序包主体已变更。



也可以使用DBMS_DDL包来编译,但只用于PL/SQL对象,不能用来编译视图


使用DBMS_UTILITY.compile_schema
使用这个包将会编译指定schema下的所有procedures, functions, packages, and triggers.
你可以在sqlplus 下使用它,如:
EXEC DBMS_UTILITY.compile_schema(schema => ‘SCOTT’);
使用UTL_RECOMP
UTL_RECOMP包有两个存储过程:RECOMP_SERIAL和RECPMP_PARALLEL
从存储过程的名字可以看出一个是非并行,一个是并行方式.
使用并行方式会加快编译速度,包的定义如下:

PROCEDURE RECOMP_SERIAL(
schema IN VARCHAR2 DEFAULT NULL,
flags IN PLS_INTEGER DEFAULT 0);

PROCEDURE RECOMP_PARALLEL(
threads IN PLS_INTEGER DEFAULT NULL,
schema IN VARCHAR2 DEFAULT NULL,
flags IN PLS_INTEGER DEFAULT 0);
参数使用方法:
schema
- 想编译的模式,如果为NULL,将编译数据库的所有无效对象.
threads
- 并行度,如果为NULL,会使用参数job_queue_processes的值.
通常threads的值最好和CPU的数量想匹配,以发挥并行的最大优势.
flags -
ORACLE内部使用的诊断测试参数.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值