Domanda

Ho un problema durante la creazione di un tipo di oggetto in Oracle 10g che eredita da un supertipo.Attualmente abbiamo molti tipi di oggetti che ereditano da questo supertype e, recentemente, il compilatore ha iniziato a lanciare i seguenti errori

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

C'è un limite al numero di sottotipi è possibile generare che ereditano da un supertipo?

È stato utile?

Soluzione

Quando si crea tabelle con colonne in base a tipi definiti dall'utente, Oracle crea ulteriori "segreto" colonne sotto le coperte.Per esempio:

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.

In questa tabella appare per avere 2 colonne:

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

...ma davvero ha quattro:

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$

Come avete visto, Oracle ha un limite di 1000 colonne per tabella.Questo limite di includere qualsiasi di queste colonne nascoste derivati da tipi e supertipi.Sembra che la tua tabella ha superato questo limite.

Altri suggerimenti

Comando uso:

PURGE RECYCLEBIN;
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top