SQL> select object_name,object_type from dba_objects where object_name like 'IDL%';
OBJECT_NAME OBJECT_TYPE
------------------------------ ------------------
IDL_CHAR$ TABLE
IDL_SB4$ TABLE
IDL_UB1$ TABLE
IDL_UB2$ TABLE
ORA-00600: internal error code, arguments: [17069], [0xC0000000DDDFA690], [], [], [], [], [], []
IDL_UB1$ is one of four tables that hold compiled PL/SQL code:
IDL_UB1$
IDL_CHAR$
IDL_UB2$
IDL_SB4$
"PL/SQL is based on the programming language Ada. As a result, PL/SQL uses a
variant of Descriptive Intermediate Attributed Notation for Ada (DIANA), which
is a tree-structured intermediate language. It is defined using a meta-notation
called Interface Definition Language (IDL). DIANA provides for communication
internal to compilers and other tools.
"At compile time, PL/SQL source code is translated into machine-readable
m-code.Both the DIANA and m-code for a procedure or package are stored in the
database.At run time, they are loaded into the shared (memory) pool. The DIANA is
used to compile dependent procedures; the m-code is simply executed."
These four tables hold the DIANA and the so-code m-code. I think "m-code" is
short for machine-dependent byte code but there is a sizable machine-indenpendent part as well. If you have a look at sql.bsq, you can see
that Oracle documents the "type" column of these tables as follows:
part number not null,
/* part: 0 = diana, 1 = portable pcode, 2 = machine-dependentpcode */
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/1384/viewspace-232326/ ,如需转载,请注明出处,否则将追究法律责任。