Subtyps Supertyp mit Oracle Objekttyp Creation. Begrenzung der Anzahl der Subtypen?
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?
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;