包体的ALTER COMPILE不会填充DBA_ERRORS表

时间:2016-09-14 07:43:55

标签: database oracle11g

我有一个数据库包MAINLOAD,它从架构A导入到架构B。

在架构A中,此对象有效。在模式B中,由于DB Link错误,此对象变为无效。

导入后此对象显示在DBA_OBJECTS表中,但其错误消息未显示在DBA_ERRORS表中。

现在,当我尝试通过发出命令ALTER PACKAGE MAINLOAD COMPILE BODY来编译此对象时,由于DBLink错误,此程序包无法进行编译,但它仍未显示在DBA_ERRORS表下。

但是,当我通过SQLDEVELOPER工具/任何其他开发工具手动编译此对象时,此对象开始显示在DBA_ERRORS表下。

我尝试发出命令 - DBMS_UTILITY.COMPILE_SCHEMA,但没有运气。

我有一个实用程序,它编译DBA_OBJECTS表下的所有无效对象,然后使用DBA_ERRORS表在屏幕上打印错误消息。

我无法理解为什么这两种过程都存在这种差异。

另外,想知道是否有任何选项可以在没有手动编译的情况下填充此DBA_ERRORS表。

非常感谢任何帮助。

谢谢&问候, Ashis Sahay

1 个答案:

答案 0 :(得分:0)

我假设您从SqlDeveloper执行ALTER PACKAGE MAINLOAD COMPILE BODY

执行此命令后,SqlDeveloper最有可能在连接上发出提交或回滚,因此数据消失。尝试从sqlplus做同样的事情,你会看到。