【问题标题】:existing state of package has been invalidated包的现有状态已失效
【发布时间】:2015-10-03 07:52:47
【问题描述】:

我正面临这个错误。

我有两个 Schema Schema A 和 Schema B

架构 B 包含一个表 my_table,其中正在插入值。

还有一个触发器my_trigger为schemaB中的my_table写的每一行

            CREATE OR REPLACE TRIGGER schemaB.my_trigger
               ON schemaA.my_table
               FOR EACH ROW
               BEGIN
               IF INSERTING THEN
                  schemaA.my_package.my_procedure (:NEW.field_A,NEW.field_B, :NEW.field_C);
               END IF;
            EXCEPTION
               WHEN OTHERS THEN
                Insert into my_log(DBMS_UTILITY.format_error_stack,sysdate);
            END my_trigger;
            /    AFTER INSERT

这个写在 schemaB 的 my_table 上的触发器正在调用一个存在于 Schema A 中的过程。

但是,当触发触发器时,我的日志中出现以下错误

            ERROR: ORA-04061: existing state of package "schemaA.my_package" has been invalidated
            ORA-04065: not executed, altered or dropped package "schemaA.my_package"
            ORA-06508: PL/SQL: could not find program unit being called: "schemaA.my_package"
            ORA-06512: at "schemaB.my_trigger", line 17      10/1/2015 6:38:07 PM

schemaA 中的过程也被声明为 PRAGMA_AUTONOMOUS_TRANSACTION

这是一些授权问题,因为我检查了所有授权,我已经检查了触发器和过程的依赖关系 一切似乎都有效。你能帮忙吗?

我尝试在调用包中使用 Pragma serially_reusable 但仍然给我同样的错误

非常感谢

【问题讨论】:

标签: oracle plsql


【解决方案1】:

阅读此博客条目以了解有关您的错误的更多信息 - http://oraclequirks.blogspot.co.il/2007/03/ora-04061-existing-state-of-package-has.html

附加代码 schemaA.my_package 可以更好地帮助您解决问题,但如果您使用全局变量,则问题的解决方案可能就在这篇文章中。

【讨论】:

    【解决方案2】:

    您可能遇到的问题是:

    • 您调用的程序包/程序无效 检查此查询是否在此 all_objects 视图中有您的包或包中使用的对象的条目

      select * from all_objects where status = 'INVALID' and owner = 'SCHEMA_NAME';

    • 检查你的包是否有全局变量?如果是,则检查这些变量是否未被任何其他会话更改

    • 运行下面的脚本来编译架构中的所有对象

      开始 dbms_utility.compile_schema('SCHEMA_NAME',false); 结束;

    • 如果上述方法均无效,则最后一个选项从您的包中删除所有过程/函数,添加新函数并尝试从触发器运行您的函数。检查这是否有效,然后您的包裹处于特殊锁定状态。添加新功能后,它的状态将再次有效,然后您可以添加所有实际的功能/过程并删除新添加的功能。

    【讨论】:

      猜你喜欢
      • 2018-08-29
      • 2014-11-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-09
      • 1970-01-01
      • 2013-01-19
      • 1970-01-01
      相关资源
      最近更新 更多