Супертип подтипа с созданием типа объекта Oracle. Ограничить количество подтипов? - PullRequest
1 голос
/ 20 января 2010

Я столкнулся с проблемой при создании типа объекта в 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

Есть ли ограничение на количество подтипов, которые вы можете сгенерировать, которые наследуются от супертипа?

Ответы [ 2 ]

3 голосов
/ 20 января 2010

Когда вы создаете таблицы со столбцами на основе пользовательских типов, 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.

В этой таблице отображается с двумя столбцами:

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 столбцов на таблицу. Это ограничение будет включать любой из этих скрытых столбцов, полученных из типов и супертипов. Похоже, ваш стол превысил этот предел.

0 голосов
/ 27 ноября 2015

использовать команду:

PURGE RECYCLEBIN;
...