Sottotipo Supertype con Oracle Tipo di Oggetto Creato.Limite al numero di sottotipi?
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?
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;