在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
您可以生成从超类型继承的子类型数量上限吗?
答案 0 :(得分:3)
当您使用基于用户定义类型的列创建表时,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列。此限制将包括从类型和超类型派生的任何这些隐藏列。看起来您的表已超出此限制。
答案 1 :(得分:-1)
使用命令:
PURGE RECYCLEBIN;