Question

J'ai rencontré un problème lors de la création d'un type d'objet dans Oracle 10g qui hérite d'un super-type. Nous avons actuellement de nombreux types d'objets qui héritent de ce supertype et, récemment, le compilateur a commencé à jeter les erreurs suivantes

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

Y at-il un plafond sur le nombre de sous-types que vous pouvez générer héritant d'un supertype?

Était-ce utile?

La solution

Lorsque vous créez des tables avec des colonnes en fonction de types définis par l'utilisateur, Oracle crée des colonnes « secrètes » supplémentaires pour vous sous les couvertures. Par exemple:

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.

Ce tableau apparaît pour avoir 2 colonnes:

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

... mais vraiment a quatre:

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$

Comme vous l'avez vu, Oracle a une limite de 1000 colonnes par table. Cette limite comprendra une de ces colonnes cachées dérivées de types et supertypes. Il ressemble à votre table a dépassé cette limite.

Autres conseils

commande use:

PURGE RECYCLEBIN;
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top