当前位置: 首页 > news >正文

Oracle故障分析:启用与禁用表的约束是否会导致存储过程无效

我们的文章会在微信公众号IT民工的龙马人生和博客网站( www.htz.pw )同步更新 ,欢迎关注收藏,也欢迎大家转载,但是请在文章开始地方标注文章出处,谢谢!
由于博客中有大量代码,通过页面浏览效果更佳。

Oracle故障分析:启用与禁用表的约束是否会导致存储过程无效

  客户一套系统因为library cache pin/library cache lock导致整个系统hang住了,全部业务中断,通过分析过,是由于人为导致编译了一个子的存储过程,导致父存储过程在执行时发现无效,自动进行编译,然而存储过程切一直在执行,最后导致了整个业务系统的hang住,这个存储过程是一个接口,所有的应用都要调用,业务通过分析日志,切没有找到任何的alter procedure的语句,只发现了alter table *** disable/enable constraint语句,所以怀疑我们的分析结果,下面是一个测试结果,让业务方知道约束的启用与禁用是不会导致过程失效的。

测试环境:DB:RHEL 4.8 OS:10.2.0.4.12

1,创建测试环境:

www.htz.pw >grant dba to scott;Grant succeeded.www.htz.pw >create table scott.test2(id number,id2 varchar2(20));Table created.www.htz.pw >alter table scott.test2 add constraint pk_test2_id primary key(id);Table altered.www.htz.pw >create table scott.test3(id number,id2 varchar2(20));Table created.www.htz.pw >alter table scott.test3 add constraint for_test3_id foreign key(id) references scott.test2(id);Table altered.www.htz.pw >conn scott/oracle
Connected.
www.htz.pw >create or replace procedure test_proc2  is 3  begin 4  execute immediate 'select count(*) from scott.test2';5  execute immediate 'select count(*) from scott.test3';6  end;7  /Procedure created.create or replace procedure test_proc2 is
beginscott.test_proc;
end;
/

2,禁用约束

www.htz.pw >alter table scott.test3 disable constraint for_test3_id;Table altered.
www.htz.pw >alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';Session altered.www.htz.pw >select owner,object_name,object_type,last_ddl_time,status from dba_objects where object_name in ('TEST2','TEST3','TEST_PROC','TEST_PROC2') and owner='SCOTT';OWNER                          OBJECT_NAME                    OBJECT_TYPE         LAST_DDL_TIME       STATUS
------------------------------ ------------------------------ ------------------- ------------------- -------
SCOTT                          TEST2                          TABLE               2013-06-21 09:52:55 VALID
SCOTT                          TEST3                          TABLE               2013-06-21 10:09:09 VALID
SCOTT                          TEST_PROC                      PROCEDURE           2013-06-21 09:53:30 VALID
SCOTT                          TEST_PROC2                     PROCEDURE           2013-06-21 10:07:52 VALID
这里发现过程是有效的
再禁用另一个约束www.htz.pw >alter table scott.test2 disable constraint pk_test2_id;Table altered.www.htz.pw >select owner,object_name,object_type,last_ddl_time,status from dba_objects where object_name in ('TEST2','TEST3','TEST_PROC','TEST_PROC2') and owner='SCOTT';OWNER                          OBJECT_NAME                    OBJECT_TYPE         LAST_DDL_TIME       STATUS
------------------------------ ------------------------------ ------------------- ------------------- -------
SCOTT                          TEST2                          TABLE               2013-06-21 10:10:08 VALID
SCOTT                          TEST3                          TABLE               2013-06-21 10:09:09 VALID
SCOTT                          TEST_PROC                      PROCEDURE           2013-06-21 09:53:30 VALID
SCOTT                          TEST_PROC2                     PROCEDURE           2013-06-21 10:07:52 VALID
两个过程都是有效的

3,启用约束

www.htz.pw >alter table scott.test2 enable constraint pk_test2_id;Table altered.www.htz.pw >alter table scott.test3 enable constraint for_test3_id;Table altered.www.htz.pw >select owner,object_name,object_type,last_ddl_time,status from dba_objects where object_name in ('TEST2','TEST3','TEST_PROC','TEST_PROC2') and owner='SCOTT';OWNER                          OBJECT_NAME                    OBJECT_TYPE         LAST_DDL_TIME       STATUS
------------------------------ ------------------------------ ------------------- ------------------- -------
SCOTT                          TEST2                          TABLE               2013-06-21 10:10:46 VALID
SCOTT                          TEST3                          TABLE               2013-06-21 10:11:11 VALID
SCOTT                          TEST_PROC                      PROCEDURE           2013-06-21 09:53:30 VALID
SCOTT                          TEST_PROC2                     PROCEDURE           2013-06-21 10:07:52 VALID

通过上面的测试可以发现,禁用约束并不会影响过程的有效性与last_ddl_time的值。

------------------作者介绍-----------------------
姓名:黄廷忠
个人博客: (http://www.htz.pw)
CSDN地址: (https://blog.csdn.net/wwwhtzpw)
博客园地址: (https://www.cnblogs.com/www-htz-pw)

http://www.jsqmd.com/news/18383/

相关文章:

  • 详细介绍:isis整体知识梳理
  • DBA必备脚本:Oracle获取正在运行SQL的字面SQL文本
  • 一文读懂字符、字形、字体
  • Moe-ctf Misc
  • 智联笔记项目——251021为分享功能添加有效期
  • 直方图
  • 深入解析:手撕哈希全家桶!unordered_map/set 底层 + 位图布隆过滤器----《Hello C++ Wrold!》(24)--(C/C++)
  • Flink 方案配置从 0 到可部署
  • 昂贵多目标优化
  • Redis为什么快 - 实践
  • 操作系统应用开发(二十一)RustDesk 域名访问故障—东方仙盟筑基期 - 详解
  • 详细介绍:【多线程】无锁数据结构(Lock-Free Data Structures)是什么?
  • 完整教程:【STM32】通用输入输出端口GPIO
  • AI元人文:岐金兰的“阴谋”
  • prufer板子
  • 军用混合现实头盔EagleEye的技术解析
  • 2025电子数据取证分析师WriteUp
  • 03.Python百行代码实现点赞系统
  • --- 常见排序算法汇总 --- - 指南
  • Search-R1论文浅析与代码实现
  • Promise多个then、catch、finally的执行结果分析与总结
  • vSAN物理磁盘故障处理
  • Ai元人文构想:技术介入人文领域的辩证思考与路径探索
  • 2025年10月医用面膜产品推荐:权威对比评测榜助术后修护精准决策
  • 2025电子数据取证分析师Wp
  • 类方法和实例方法区别 flutter
  • 今天给电脑安装了新华财经
  • [Linux]学习笔记系列 -- lib/xarray.c eXtensible Array (XArray) 可扩展数组 - 教程
  • 2025年10月仓储管理系统推荐榜:鸿链云仓领衔对比评测排行
  • 一款优秀笔记软件的自我修养 - 实践