Frage

Ich habe auf ein Problem stoßen, wenn ein Objekttypen in Oracle 10g der Erstellung, die erbt von einem Supertyp. Wir haben zur Zeit viele Objekttypen, die erben von diesem Supertyp und vor kurzem des Compiler gestartet, um die folgenden Fehler werfen

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

Gibt es eine Obergrenze für die Anzahl der Subtypen Sie diese erben von einem Supertyp erzeugen kann?

War es hilfreich?

Lösung

Wenn Sie Tabellen mit Spalten erstellen, basierend auf benutzerdefinierte Typen, erstellt Oracle zusätzliche „geheime“ Spalten für Sie unter der Decke. Zum Beispiel:

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.

Diese Tabelle erscheint 2 Spalten haben:

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

... aber es wirklich hat vier:

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$

Wie Sie gesehen haben, hat Oracle eine Grenze von 1000 Spalten pro Tabelle. Diese Grenze wird jeder dieser versteckten Spalten enthalten von Typen und geordneten Typen abgeleitet. Es sieht aus wie Ihre Tabelle diese Grenze überschritten hat.

Andere Tipps

verwenden Sie den Befehl:

PURGE RECYCLEBIN;
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top