Supertipo de subtipo com a criação do tipo de objeto Oracle. Limite para o número de subtipos?

StackOverflow https://stackoverflow.com/questions/2101660

Pergunta

Eu encontrei um problema ao criar um tipo de objeto no Oracle 10G que herda de um supertipo. Atualmente, temos muitos tipos de objetos que herdam deste supertipo e, recentemente, o compilador começou a jogar os seguintes erros

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

Existe um limite no número de subtipos que você pode gerar que herda a partir de um supertipo?

Foi útil?

Solução

Quando você cria tabelas com colunas com base em tipos definidos pelo usuário, o Oracle cria colunas "secretas" adicionais para você sob as cobertas. Por exemplo:

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.

Essa mesa parece ter 2 colunas:

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

... mas isso verdade tem quatro:

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$

Como você viu, o Oracle tem um limite de 1000 colunas por tabela. Esse limite incluirá qualquer uma dessas colunas ocultas derivadas de tipos e supertipo. Parece que sua tabela excedeu esse limite.

Outras dicas

Use comando:

PURGE RECYCLEBIN;
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top