戴安娜是谁,为什么她不让我的数据库对象编译?

2021-12-29 00:00:00 oracle stored-procedures views

好的,所以问题标题有点诙谐,但问题已经足够严重了.有时,在编译架构中的对象或导入转储文件时,我会看到以下错误消息:

OK, so the question title is a little tongue-in-cheek, but the question is serious enough. Occasionally, when compiling the objects in a schema or importing a dump file, I see the following error message:

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

这实际上意味着什么,我该如何避免?

what does this actually mean, and how can I avoid it?

推荐答案

此处相关:PL/SQL、包大小、解析树节点、代码行.

Relevant here: PL/SQL, Package Size, Parse Tree Nodes, Lines of Code.

Diana 是 Oracle 的接口定义语言,用于将数据库表的结构和 PL/SQL 程序单元的逻辑表示为属性树.

Diana is Oracle’s interface definition language to represent the structure of database tables and the logic of PL/SQL program units as attributed trees.

解析树节点的数量有内部限制.编译器版本设置了最大代码行数.

There are internal limits on the number of parse tree nodes. Compiler version sets the maximum lines of code.

所以检查PL/SQL逻辑和代码行的大小.了解您的版本可以处理的实际限制可能是不可能的,甚至是不必要的.

So check the size of PL/SQL logic and the lines of code. It may not be possible, or even necessary to know the actual limits that your version can handle.

一旦您知道在何处调整包裹的尺寸,问题就解决了一半.

Once you know where to right size your package, half the problem is solved.

当你解决了另一半时也请告诉我们,谢谢.

Let us know when you have solved the other half, too, thanks.

相关文章