النوع الفرعي supertype مع إنشاء نوع كائن Oracle. الحد من عدد الأنواع الفرعية؟

StackOverflow https://stackoverflow.com/questions/2101660

سؤال

لقد واجهت مشكلة عند إنشاء نوع كائن في 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;
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top