包对象之Oracle如何编译失效包体
发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,主题:如何Oracle编译失效的包体作者:基毛飞上天情况说明:在吗?可以帮忙重新编译一个包吗?我们这边编译不了!处理思维:(1)包头失效还是包体失效?(2)是否存在阻碍的进程影响重新编译?(3)如果存
千家信息网最后更新 2026年10月31日包对象之Oracle如何编译失效包体BEGIN pkg_test.ap_get_baTran(200,20180515); END;
7. 杀会话
经与应用人员沟通,可以尽情地杀会话,以及PROCESS(这个需要本地杀)
8. 再次查看是否有独占编译包体的锁
检查出1719 ZJDB PKG_TEST Body Exclusive None,还是存在独占DDL锁的进程。按照以上的方式,杀1719的会话,是不对的!因为这个会话就是SYS用户正在执行重新编译的语句。不可能杀掉重新编译的语句嘛,所以看下还能从什么方面下手!
9. 找出ZJDB.PKG_TEST对应ddl锁的相关信息
找出ZJDB.PKG_TEST对应的DDL锁的SID与会话SID符合的会话,机器名字和用户名字以及状态
--以sid=10155为例子,杀系统的process,这个杀process的操作,一般是在他们的主机杀process!
http://www.itpub.net/forum.php?mod=viewthread&tid=1761963
https://blog.csdn.net/u011146687/article/details/72808565
主题:如何Oracle编译失效的包体
作者:基毛飞上天
情况说明:在吗?可以帮忙重新编译一个包吗?我们这边编译不了!
处理思维:
(1)包头失效还是包体失效?
(2)是否存在阻碍的进程影响重新编译?
(3)如果存在阻碍,与应用人员沟通,是否可以尝试杀Process以及会话
1. 查看包头和包体是否失效?
从以下SQL语句输出得知,包头没有失效,包体失效了
点击(此处)折叠或打开
- SQL> SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR(to_char('7b4dpss4k3hc5'),NULL));
- PLAN_TABLE_OUTPUT
- --------------------------------------------------
- SQL_ID 7b4dpss4k3hc5, child number 0
- BEGIN pkg_test.ap_get_baTran(200,20180515); END;
- NOTE: cannot fetch plan for SQL_ID: 7b4dpss4k3hc5, CHILD_NUMBER: 0
- Please verify value of SQL_ID and CHILD_NUMBER;
- It could also be that the plan is no longer in cursor cache (check v$sql_plan)
点击(此处)折叠或打开
- alter system kill session '12481,8711';
检查出1719 ZJDB PKG_TEST Body Exclusive None,还是存在独占DDL锁的进程。按照以上的方式,杀1719的会话,是不对的!因为这个会话就是SYS用户正在执行重新编译的语句。不可能杀掉重新编译的语句嘛,所以看下还能从什么方面下手!
点击(此处)折叠或打开
- SQL> select * from dba_ddl_locks where name='PKG_REPORT';
- SESSION_ID OWNER NAME TYPE MODE_HELD MODE_REQU
- ---------- --------------- ---------------- ------------------------- --------- ---------
- 9710 ZJDB PKG_TEST Table/Procedure/Type Null None
- 948 ZJDB PKG_TEST Table/Procedure/Type Null None
- 10155 ZJDB PKG_TEST Table/Procedure/Type Null None
- 6814 ZJDB PKG_TEST Table/Procedure/Type Null None
- 2851 ZJDB PKG_TEST Table/Procedure/Type Null None
- 21183 ZJDB PKG_TEST Table/Procedure/Type Null None
- 14698 ZJDB PKG_TEST Table/Procedure/Type Null None
- 16963 ZJDB PKG_TEST Table/Procedure/Type Null None
- 23503 ZJDB PKG_TEST Table/Procedure/Type Null None
- 2650 ZJDB PKG_TEST Table/Procedure/Type Null None
- 20671 ZJDB PKG_TEST Table/Procedure/Type Null None
- 1719 ZJDB PKG_TEST Body Exclusive None
- 9710 ZJDB PKG_TEST Body Null None
- 20671 ZJDB PKG_TEST Body Null None
- 6814 ZJDB PKG_TEST Body Null None
- 16963 ZJDB PKG_TEST Body Null None
- 21183 ZJDB PKG_TEST Body Null None
- 948 ZJDB PKG_TEST Body Null None
- 2851 ZJDB PKG_TEST Body Null None
- 10155 ZJDB PKG_TEST Body Null None
- 23503 ZJDB PKG_TEST Body Null None
- 2650 ZJDB PKG_TEST Body Null None
- 14698 ZJDB PKG_TEST Body Null None
- 23 rows selected.
9. 找出ZJDB.PKG_TEST对应ddl锁的相关信息
找出ZJDB.PKG_TEST对应的DDL锁的SID与会话SID符合的会话,机器名字和用户名字以及状态
点击(此处)折叠或打开
- SQL> select b.saddr, b.sid, b.serial#,b.process,b.status,b.username, b.MACHINE from v$session b where b.sid in
- ( Select b.sid From dba_ddl_locks a, v$session b Where a.session_id = b.SID and a.name = 'PKG_TEST' and owner='ZJDB')
- order by b.username desc;
- SADDR SID SERIAL# PROCESS STATUS USERNAME MACHINE
- ---------------- ---------- ---------- ---------- -------- --------- ---------
- 070000A02BB0E7E0 1719 30765 37358470 ACTIVE SYS RACZJ-DB1
- 070000A010BFF958 10155 46885 33227250 ACTIVE ZJDB RACZJ-DB1
- 070000A00CB32110 9710 9641 27525876 ACTIVE ZJDB RACZJ-DB1
- 070000A023BC4438 2032 9479 31195338 ACTIVE ZJDB RACZJ-DB1
- 070000A0061E8210 23503 30787 55313168 ACTIVE ZJDB RACZJ-DB1
- 070000A0279C9920 948 44781 13631706 ACTIVE ZJDB RACZJ-DB1
- 070000A02B9B4FC0 893 27923 54263886 ACTIVE ZJDB RACZJ-DB1
- 070000A02BCA68C8 2650 48113 29033334 ACTIVE ZJDB RACZJ-DB1
- 070000A00DE3DE58 21183 59867 43516348 ACTIVE ZJDB RACZJ-DB1
- 070000A015A40440 18410 50345 3998656 ACTIVE ZJDB RACZJ-DB1
- 070000A009727FB0 16963 33555 66847560 ACTIVE ZJDB RACZJ-DB1
- 070000A023D20C00 2851 17117 10224286 ACTIVE ZJDB RACZJ-DB1
- 070000A02FB62590 1776 28699 46334786 ACTIVE ZJDB RACZJ-DB1
- 070000A015E08488 20671 38781 53150014 ACTIVE ZJDB RACZJ-DB1
- 070000A011386AF0 14698 60901 37421588 ACTIVE ZJDB RACZJ-DB1
- 070000A005CC69A8 20416 37977 30147116 ACTIVE ZJDB RACZJ-DB1
- 070000A001EE7AC0 21745 60937 8192734 ACTIVE ZJDB RACZJ-DB1
- 17 rows selected.
--以sid=10155为例子,杀系统的process,这个杀process的操作,一般是在他们的主机杀process!
点击(此处)折叠或打开
- SQL> select sid, SERIAL#,process,status from v$session where sid=10155;
- SID SERIAL# PROCESS STATUS
- ---------- ---------- ------------------------ --------
- 10155 30765 37358425 ACTIVE
- $ ps -ef|grep 37358425
- $ kill -9 37358425 --操作系统层面杀会话
- $ ps -ef|grep 37358452
点击(此处)折叠或打开
- alter system kill session '10155,46885';
- alter system kill session '9710,9641';
- alter system kill session '2032,9479';
- alter system kill session '23503,30787';
- alter system kill session '948,44781';
- alter system kill session '893,27923';
- alter system kill session '2650,48113';
- alter system kill session '21183,59867';
- alter system kill session '18410,50345';
- alter system kill session '16963,33555';
- alter system kill session '2851,17117';
- alter system kill session '1776,28699';
- alter system kill session '20671,38781';
- alter system kill session '14698,60901';
- alter system kill session '20416,37977';
- alter system kill session '21745,60937';
点击(此处)折叠或打开
- SQL> alter package ZJDB.PKG_TEST compile body;
- Package body altered.
http://www.itpub.net/forum.php?mod=viewthread&tid=1761963
https://blog.csdn.net/u011146687/article/details/72808565
编译
层面
系统
语句
包头
操作系统
人员
名字
用户
还是
进程
应用
不对
成功
主机
主题
作者
例子
信息
再次
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
什么是科技互联网
喔噻互联网科技有限公司
互联网科技公司起名
科技互联网企业
圆梦互联网科技
宜安科技 互联网金融
百单互联网科技有限公司
上海亿帐通互联网科技
佩信高科技互联网
科技赋能互联网健康
互联网科技教育视频
洛阳昕诺飞互联网科技有限公司
天津腾达互联网科技有限公司
互联网科技创新的路径
恒生互联网科技业指数调整周期
南通创西澳互联网科技有限公司
启辰互联网科技
北京天晋互联网科技有限公司
10位科技互联网大佬
互联网的黑科技实验室
互联网科技园
科技和互联网公司
盈实互联网科技
奔汉互联网科技
互联网公司高科技产品
广东鹅鹅鹅互联网科技有限公司
广州三三互联网科技有限公司
北京军民互联网科技公司
马化腾互联网科技教学
绵阳真晨互联网科技有限公司