我创建在Oracle 10g中,一个对象类型时,所遇到的一个问题从一个超类型继承。目前,我们有很多的对象类型,从这个超最近编译器继承开始抛出下面的错误

ORA-30745: error occured while trying to add column "SYS_NC_ROWINFO$" in table "DATA_CACHE.CACHE_ENTRIES"

ORA-01792: maximum number of columns in a table or view is 1000

是否有亚型的数量上限,您可以生成从父继承?

有帮助吗?

解决方案

当创建具有基于用户定义类型的列表时,Oracle产生额外的“秘密”你在幕后列。例如:

SQL> create type emp_data_t  as object (empno number, ename varchar2(30));
  2  /

Type created.

SQL> create table emp_data_table (id int, emp_data emp_data_t);

Table created.

此表的出现以具有2列:

SQL> desc emp_data_table
 Name                       Null?    Type
 -------------------------- -------- ------------------------
 ID                                  NUMBER(38)
 EMP_DATA                            EMP_DATA_T

...但它的真的有四个:

SQL> select name
  2  from sys.col$
  3  where obj# = (select object_id 
  4                from user_objects 
  5                where object_name='EMP_DATA_TABLE');

NAME
------------------------------
ID
EMP_DATA
SYS_NC00003$
SYS_NC00004$

您已经看到,Oracle有每表1000组的列的限制。这个限制将包括从任何类型和超类型派生这些隐藏的列。它看起来像你的表已经超过了这个限制。

其他提示

使用命令:

PURGE RECYCLEBIN;
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top