zoukankan      html  css  js  c++  java
  • 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;)

  • 相关阅读:
    求二叉树的层次遍历
    求二叉树的先序遍历
    数据结构实验之二叉树一:树的同构
    list列表操作
    汉罗塔问题
    expected an indented block
    42步进阶学习—让你成为优秀的Java大数据科学家!
    MVC 3.0错误 HTTP 404您正在查找的资源(或者它的一个依赖项)可能已被移除,或其名称已更改,或暂时不可用。请检查以下 URL 并确保其拼写正确。
    判断浏览器版本
    VisualStudio2012编辑器错误
  • 原文地址:https://www.cnblogs.com/kerrycode/p/7772062.html
Copyright © 2011-2022 走看看