包对象之Oracle如何编译失效包体

本文介绍了在Oracle数据库中遇到包体编译失效的问题时,如何通过检查包头状态、查找阻碍编译的进程、分析DDL锁以及杀掉相关会话来解决。详细步骤包括使用SQL查询来诊断和解决包体编译问题。
摘要由CSDN通过智能技术生成


主题:如何Oracle编译失效的包体
作者:基毛飞上天

情况说明:在吗?可以帮忙重新编译一个包吗?我们这边编译不了!

处理思维:
(1)包头失效还是包体失效?
(2)是否存在阻碍的进程影响重新编译?
(3)如果存在阻碍,与应用人员沟通,是否可以尝试杀Process以及会话

1. 查看包头体是否失效?

以下SQL语句输出得知,包头没有,包体失效了

点击(此处)折叠或打开

  1. SQL> set lines 250
  2. SQL> set pages 1000000
  3. SQL> set pages 10000
  4. SQL> select * from dba_objects where owner in ('ZJDB') and object_name = 'PKG_TEST';

  5. OWNER OBJECT_NAME SUBOBJECT_NAME OBJECT_ID DATA_OBJECT_ID OBJECT_TYPE
  6. ------------------------------ ------------------------------------------------------------------------------------ ---------- -------------- -------------------
  7. CREATED LAST_DDL_TIME TIMESTAMP STATUS T G S NAMESPACE EDITION_NAME
  8. ------------------- ------------------- ------------------- ------- - - - ---------- ------------------------------
  9. ZJDB PKG_TEST 451406 PACKAGE
  10. 2018-01-16 05:42:35 2018-04-14 10:21:22 2018-04-22:17:50:30 VALID N N N 1

  11. ZJDB PKG_TEST 451443 PACKAGE BODY
  12. 2018-01-16 05:44:41 2018-04-14 10:21:25 2018-04-25:10:14:04 INVALID N N N 2


2. 重新编译包体

检查有什么阻碍包体的编译

点击(此处)折叠或打开

  1. SQL> alter package ZJDB.PKG_TEST compile body;


3. 查看DDL的结构

点击(此处)折叠或打开

  1. SQL> desc dba_ddl_locks
  2.  Name Null? Type
  3.  ------------------ ------- ----------------
  4.  SESSION_ID       NUMBER
  5.  OWNER           VARCHAR2(30)
  6.  NAME            VARCHAR2(30)
  7.  TYPE            VARCHAR2(40)
  8.  MODE_HELD       VARCHAR2(9)
  9.  MODE_REQUESTED  VARCHAR2(9)


4. 查看DDL锁的独占 -- Exclusive

点击(此处)折叠或打开

  1. SQL> select * from dba_ddl_locks where name='PKG_TEST';
  2. SESSION_ID OWNER NAME TYPE MODE_HELD MODE_REQU
  3. ---------- --------------- -------------------- -------------------- --------- ---------
  4.       1719 ZJDB PKG_TEST
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值