it-swarm.asia

ORA-01654: غير قادر على توسيع الفهرس <اسم الفهرس> بمقدار 128 في مساحة الجدول <اسم مساحة الفهرس>

أنا لست DBA ولكن يجب حل هذه المشكلة.

يوجد مساحات طاولات دائمة في قاعدة بيانات Oracle 9i. واحد للجداول والآخر للفهارس بخلاف مساحات الجداول المؤقتة وطاولات UNDO

الأسبوع الماضي حصلت على الاستثناء

ORA-01654: غير قادر على تمديد المؤشر <name of the index> × 128 في مساحة الطاولة <name of the Index tablespace>.

حصلت على زيادة حجم مساحة الطاولة بشكل ملحوظ. ولكن ما زلت أتلقى هذا الخطأ.

لقد حذفت الكثير من بيانات التفكير التي من شأنها تحرير بعض المساحة. ولكن هذا لا فائدة منه.

هل سيؤدي تقليص مساحة الجدول أو تغيير حجم ملفات البيانات الخاصة بمساحة الجدول الدائمة إلى حل هذه المشكلة؟

أيضا ، لم يتم جمع الإحصاءات منذ مارس. هل سيساعدني جمع أحدث الإحصائيات بأي شكل من الأشكال؟

4
Savitha

لن يؤدي حذف البيانات إلى أي فرق حيث ستحتفظ Oracle بالمساحة جاهزة لإعادة تعبئتها. يُعرف الاستخدام العلوي للمساحة في الجدول باسم علامة مائية عالية. Tom Kyte لديه مشاركة رائعة عنه .

يمكنك تقليل علامة مائية عالية بإعادة بناء الجدول:

alter table my_table_name move;

إذا كنت لا تزال تحصل على الخطأ بعد زيادة حجم مساحة الطاولة ، فهناك عدة أسباب محتملة ...

  1. الفهرس كبير جدًا حتى بالنسبة لمساحة الطاولات المتزايدة حديثًا. ما هو حجم الجدول وما هو الحجم المجمع للأعمدة التي تقوم بفهرستها؟
  2. أنت لا تحدد مساحة جدول عند إنشاء الفهرس ولا تستخدم المساحة التي تعتقدها ، مهما كانت مساحة الجدول الافتراضية لمخططك.

الجواب على 1 هو إضافة المزيد من المساحة.

لمعرفة مساحة الجدول الافتراضية الخاصة بك:

select * from dba_users where username = 'MY_USER'

إذا لم تكن هذه مساحة جدول الفهرس لديك فعليك تحديدها عند إنشاء الفهرس.

create index i_my_table 
    on my_table ( my_column ) 
       tablespace my_index_ts
       < other options >

نعم ، إذا كنت في 9i ، فمن الجدير بالتأكيد جمع الإحصائيات لأنها لا تجمعها تلقائيًا عند إجراء تغييرات كافية على الجدول - إنها تفعل في الإصدارات اللاحقة. استخدم DBMS_STATS.GATHER_TABLE_STATS() وقم بذلك فقط بعد إعادة بناء الجدول.

لسوء الحظ في Oracle لا يمكنك تقليل حجم مساحة الجدول. لاستخدام هذا الخيار ، يجب عليك إعادة إنشاء مساحة الطاولة ، ولكن أصغر حجمًا ، ونقل كل شيء إليها.

8
Ben

يمكنك استعادة بعض المساحة على طاولاتك الأكبر باستخدام:

ALTER TABLE xxx ENABLE ROW MOVEMENT
ALTER TABLE xxx SHRINK SPACE
ALTER TABLE xxx DISABLE ROW MOVEMENT

لاحظ أنه ربما ستضطر إلى إعادة بناء بعض الكائنات بعد ذلك.

2
Benoit