ORA-04028: cannot generate diana for object xxx

简介: 在ORACLE数据库(10.2.0.5.0)上修改一个包的时候,编译有错误,具体错误信息为"ORA-04028: cannot generate diana for object xxx"。   Warning: Package Body created with compilation errors.

 

在ORACLE数据库(10.2.0.5.0)上修改一个包的时候,编译有错误,具体错误信息为"ORA-04028: cannot generate diana for object xxx"。

 

Warning: Package Body created with compilation errors.
 
SQL> show error;
Errors for PACKAGE BODY XXXXX."XXXXXXXX":
 
LINE/COL ERROR
-------- -----------------------------------------------------------------
0/0      ORA-04028: cannot generate diana for object
         xxxx.xxxxx
 
SQL> 

 

第一次遇到这样的错误信息,有点懵,查看错误信息具体解释,解释有lock conflict, 但是所涉及表根本没有任何会话进程锁定。在Meta Link上搜索,才发现是一个Bug

 

 

$ oerr ora 4028

04028, 00000, "cannot generate diana for object %s%s%s%s%s"

// *Cause:  Cannot generate diana for an object because of lock conflict.

// *Action: Please report this error to your support representative.

 

 

 

当包依赖的视图重建后,如果此时尝试编译包就会遇到这个错误,而我所遇到情况是包所依赖的表重建了。 具体可以参考ORA-4028 ERROR WHILE RECOMPILING PL/SQL PACKAGE (文档 ID 1505092.1),

 

 

APPLIES TO:

 

PL/SQL - Version 10.2.0.5 to 10.2.0.5 [Release 10.2]

Information in this document applies to any platform.

 

SYMPTOMS

 

 

Attempting to compile a package fails after the creation of a dependent view with:

 

ORA-04028: cannot generate diana for object SCOTT.V_TEST

 

 

Testcase Scenario:

 

SQL> CREATE OR REPLACE VIEW V_TEST

(a, b)

AS

select a,b from test

/

  2 3 4 5

View created.

 

SQL> alter package p_test compile;

alter package p_test compile

*

ERROR at line 1:

ORA-04028: cannot generate diana for object SCOTT.V_TEST

 

 

CAUSE

unpublished Bug 9342254 - ORA-4028: CANNOT GENERATE DIANA OBJECT AND ORA-4020 : DEAD LOCK

 

 

SOLUTION

The defect is fixed in 11.1 or later.

Download and apply the Patch 9342254 for your version and platform.

 

 

如上所示,这个是一个bug来的,在ORACLE 11.1以及以后版本已经fix掉了,如果遇到这个问题,要么应用补丁9342254 ,如果不能立马应用补丁,经过测试也有两种方法解决:

 

1:重启数据库,然后重编译包。这时可以重新编译包,不会遇到这个错误。

2:清空SHARED_POOL,然后重编译包。(ALTER SYSTEM FLUSH SHARED_POOL;)

相关文章
|
2月前
|
Java 测试技术 数据库
hql投影查询之—— [Ljava.lang.Object; cannot be cast to cn.bdqn.guanMingSys.entity.Notice
hql投影查询之—— [Ljava.lang.Object; cannot be cast to cn.bdqn.guanMingSys.entity.Notice
11 0
|
6月前
libfreetype.so.6: cannot open shared object file: No such file or directory
libfreetype.so.6: cannot open shared object file: No such file or directory
168 0
|
机器学习/深度学习 Linux
解决ImportError libgmpxx.so.4 cannot open shared object file No such file or directory
解决ImportError libgmpxx.so.4 cannot open shared object file No such file or directory
178 0
解决ImportError libgmpxx.so.4 cannot open shared object file No such file or directory
|
3月前
|
Java
cannot open shared object file: No such file or directory
cannot open shared object file: No such file or directory
24 0
|
5月前
FeignClient【问题】Cannot deserialize value of type``from Object value (token `JsonToken.START_OBJECT`)
FeignClient【问题】Cannot deserialize value of type``from Object value (token `JsonToken.START_OBJECT`)
221 0
|
5月前
|
Java
cannot open shared object file: No such file or directory
cannot open shared object file: No such file or directory
36 0
|
6月前
|
NoSQL MongoDB
mongod: error while loading shared libraries: libcrypto.so.1.1: cannot open shared object file: No s
mongod: error while loading shared libraries: libcrypto.so.1.1: cannot open shared object file: No s
152 0
|
6月前
gdalinfo: error while loading shared libraries: libgdal.so.30: cannot open shared object file: No su
gdalinfo: error while loading shared libraries: libgdal.so.30: cannot open shared object file: No su
|
6月前
|
关系型数据库 MySQL
mysql: error while loading shared libraries: libtinfo.so.5: cannot open shared object file: No such
mysql: error while loading shared libraries: libtinfo.so.5: cannot open shared object file: No such