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.
 
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;)

时间: 2024-11-01 06:38:26

ORA-04028: cannot generate diana for object xxx的相关文章

记一次奇怪的ORA-04028: cannot generate diana for object

      开发人员说新建了一个package,在编译的过程中出现了一些错误.提示为PL/SQL:ORA-00942: table or view does not exists.这是一个很明显的错误,即要么是表不存在,要么是由于没有权限就会出现该错误提示.根据这个提示,在增加相应的权限后,再次编译收到了ORA-04028: cannot generate diana for object这个错误提示.下面是具体的描述.   1.错误提示信息 gx_adm@MMDB> alter package

orm-关于hibernate实体类ID自增长的问题

问题描述 关于hibernate实体类ID自增长的问题 一个Java web项目,实体ID是这样的:BEIJING00000001 自增长的 用的ORM是hibernate. 现在用的自增长只能这么增长:1 ,2,3,4... 不能自己补上的前面的部分. 必须在服务层给补上或去掉,很满帆,不知道hibernate有解决这个问题更简单的方案吗? 解决方案 可以考虑Hibernate主键的 自定义主键生成策略. 配置如下: 写一个com.XXX.XXX.MYIDGenerator实现id策略接口Id

QTE移植过程及问题

  qt/embedded 4.5.3 的编译与移植-   README: qt/embedded 4.5.3 的编译,视你的编译器的不同可以编译出两种版本: 一.用以主机下(即x86)下的版本,配合qvfb(编译看下一篇日志 ),可以在主机上模仿在目标板上的运行过程: 二.用于目标板(即ARM)上的版本,在目标板上下运行qt程序需要用它的qmake,下载编译出来的lib目录,lib里包括一些库和fonts: 三.按此文档需在理解的基础上成功移植: 课外知识: 首先,有必要区分几个名词:Qt,Q

悠然乱弹:“最好的模板引擎”Beetl 剖析及与Tiny模板引擎对比

Beetl的环境搭建 输入命令 ? 1 git clone https://git.oschina.net/xiandafu/beetl2.0.git 不一会儿,输出了下面的内容 ? 1 2 3 4 5 6 7 Cloning into 'beetl2.0'... remote: Counting objects: 5807, done. remote: Compressing objects: 100% (2145/2145), done. remote: Total 5807 (delta

网页特效代码小集合

集合|特效|网页|网页特效 1.忽视右键 <body oncontextmenu="return false"> 或 <body style="overflow-y:hidden"> 2.加入背景音乐 IE:<bgsound src="*.mid" loop=infinite> NS:<embed src="*.mid" autostart=true hidden=true loop=

网页制作中常用的一些实用辅助代码

网页 点击返回上页代码: <form> <p><input TYPE="button" VALUE="返回上一步" ></p> </form> 弹出警告框代码: <form> <p><input TYPE="button" VALUE="弹出警告框" ></p> </form> <script lang

网页教学网推荐:常用网页设计效果代码十五例

设计|网页|网页设计 1.忽视右键 <body oncontextmenu="return false"> 或 <body style="overflow-y:hidden"> 2.加入背景音乐 IE:<bgsound src="*.mid" loop=infinite> NS:<embed src="*.mid" autostart=true hidden=true loop=tru

转贴别人JS脚本的总结

js|脚本 作者tag:.net CSDN 推荐tag:document html oo os tex ui   转贴别人JS脚本的总结 1,Kafree总结的一些尺寸:不同分辨率下浏览器不出现滚动条的极限尺寸:780*452(状态栏浮,800x600) 780*480(无浮动栏,800x600)1004*651(无浮动栏,1024x768) 1004*623(状态栏浮,1024x768) 其它:banner:468*60 网站标志(没有规定尺寸):111*36 LOGO:88*31 2,HTM

实例技巧文章:网页效果集合

集合|技巧|网页 1.忽视右键 <body > 或<body style="overflow-y:hidden"> 2.加入背景音乐 IE:<bgsound src="*.mid" loop=infinite> NS:<embed src="*.mid" autostart=true hidden=true loop=true> </embed> *.mid你的背景音乐的midi格式文件