当前位置:  开发笔记 > 编程语言 > 正文

什么情况导致Oracle包变得无效?

如何解决《什么情况导致Oracle包变得无效?》经验,为你挑选了2个好方法。

创建此问题的方案:

我们有一个包是另一个包的依赖,有时对"父"包进行更改会导致依赖包变为无效,但有时却不会.

它之前让我们感到惊讶.

简单地理解导致失效的原因是非常有用的,因此我可以预测/计划失效.



1> Thomas Jones..:

更改包依赖的任何对象(例如表,视图,触发器,其他包)将自动将包标记为无效.正如上面的tuinstoel所说,Oracle在第一次使用时足够聪明,可以重新编译软件包.

如果您担心这一点,每次进行架构更改(例如表,视图,触发器,过程)时,运行一个DBMS_UTILITY.compile_schema (或让DBA执行此操作).这将强制编译所有包,并让您知道在找到错误之前,或者是否有错误.


警告:建议不要使用DBMS_UTILITY.COMPILE_SCHEMA(),因为Oracle8i以及9i以来就是这样.我们可以逃脱它,但这里是更可靠的替代品.请参阅我对这个其他主题的回答http://stackoverflow.com/questions/3200202/trigger-is-invalid-in-oracle/3200439#3200439

2> Guru..:

或者,您可以查询下表以查看您拥有的依赖项

   select *
   from dba_dependencies
   where name = 'YOUR_PACKAGE'
   and referenced_owner = 'ANYUSER' --- Comment this out if you are looking for yourself
   and owner = USER --- Or can be set to any user

这将显示所有依赖项.对于您的对象查询user_dependencies.

推荐阅读
和谐啄木鸟
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有