重庆思庄Oracle、Redhat认证学习论坛

标题: utlrp.sql脚本HANG住 [打印本页]

作者: mahan    时间: 2024-12-29 07:53
标题: utlrp.sql脚本HANG住
脚本utlrp.sql主要用于编译无效包。执行期间主要调用utlprp.sql脚本。相关代码如下所示:

Rem ==========================================================================

Rem BEGIN utlrp.sql

Rem ==========================================================================

@@utlprp.sql 0

Rem ==========================================================================

Rem END utlrp.sql

Rem ==========================================================================

进一步研究文件utlprp.sql,可以看到,在默认情况下Oracle会调用存储过程utl_recomp.recomp_parallel并行编译无效包。当threads取值为0时,由Oracle根据参数cpu_count和parallel_threads_per_cpu自行决定并行度。脚本如下所示:

DECLARE

   threads pls_integer := &&1;

BEGIN

   utl_recomp.recomp_parallel(threads);

END;

/

有时候,由于Oracle bug 14065287,在启用并行编译无效对象时,脚本utlrp.sql会出现HANG现象,这时需要启用串行编译无效对象,如下所示:

BEGIN

   utl_recomp.recomp_serial();

END;

/

注意启用并行编译时,在某些数据库版本中可能会由于process参数不够而导致并行进程无法派生,进而导致编译失败。






欢迎光临 重庆思庄Oracle、Redhat认证学习论坛 (http://bbs.cqsztech.com/) Powered by Discuz! X3.2