النوع الفرعي supertype مع إنشاء نوع كائن Oracle. الحد من عدد الأنواع الفرعية؟
سؤال
لقد واجهت مشكلة عند إنشاء نوع كائن في Oracle 10G يرث من نوع SuperType. لدينا حاليًا العديد من أنواع الكائنات التي ترث من هذا supertype ومؤخرا بدأ المترجم في إلقاء الأخطاء التالية
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
هل هناك غطاء على عدد الأنواع الفرعية التي يمكنك توليدها التي ترث من نوع Supertype؟
المحلول
عندما تقوم بإنشاء جداول مع أعمدة بناءً على أنواع محددة من قبل المستخدم ، تقوم Oracle بإنشاء أعمدة "سرية" إضافية لك تحت الأغطية. علي سبيل المثال:
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.
هذه الطاولة يبدو للحصول على عمودين:
SQL> desc emp_data_table
Name Null? Type
-------------------------- -------- ------------------------
ID NUMBER(38)
EMP_DATA EMP_DATA_T
... لكنها هل حقا لديه أربعة:
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$
كما رأيت ، فإن Oracle لديه 1000 عمود لكل جدول. سيتضمن هذا الحد أيًا من هذه الأعمدة المخفية المستمدة من الأنواع والأنواع الفائقة. يبدو أن طاولتك قد تجاوز هذا الحد.
نصائح أخرى
استخدم الأمر:
PURGE RECYCLEBIN;