ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 存储过程出现ORA-06508错误

存储过程出现ORA-06508错误

原创 Linux操作系统 作者:davidyu720 时间:2019-05-07 08:33:05 0 删除 编辑

一个存储过程平时执行正常,刚才执行出ORA-06508错误。百思不得其解,好像没有什么不正常的地方啊!

后来找到了答案。

重现这个错误如下:执行一个存储过程,其运行时间比较长。刚开始运行时,所有的被依赖对象当然都是VALID的,不然会无法运行。在其运行过程中,被依赖的某对象变为INVALID的了,当程序运行到与INVALID状态对象有关语句时,就会抛出ORA-06508异常。

测试代码如下:
create table TEST_TABLE(id number);

create or replace procedure A_T1 as
begin
DBMS_LOCK.sleep(20);
A_T2;
END;

create or replace procedure A_T2 as
begin
delete from TEST_TABLE;
commit;
DBMS_LOCK.sleep(10);
END;

然后在一个会话中EXECUTE A_T1,然后在另一个会话中drop table TEST_TABLE。当第一个会话执行到A_T2时,会抛出ORA-06508异常。

SQL> EXECUTE a_t1;

begin a_t1; end;

ORA-04068: existing state of packages has been discarded
ORA-04064: not executed, invalidated procedure "MYUSER.A_T2"
ORA-06508: PL/SQL: could not find program unit being called
ORA-06512: at "MYUSER.A_T1", line 4
ORA-06512: at line 2


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/9844649/viewspace-580070/,如需转载,请注明出处,否则将追究法律责任。

上一篇: MFC的多继承问题
请登录后发表评论 登录
全部评论

注册时间:2007-08-18

  • 博文量
    235
  • 访问量
    190675