具有Oracle对象类型创建的子类型超类型。限制亚型的数量?

在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;
    

要回复问题请先登录注册