it-swarm.asia

ORA-01502: الفهرس أو التقسيم لهذا المؤشر في حالة صالحة للاستخدام

لدي جدول في قاعدة بيانات Oracle الخاصة بي ، حيث

select pkcol, count(*) from myTable group by pkcol having count(*) > 1;

عائدات

  PKCOL   COUNT(*)
------- ----------
      1          2
      2          2

محاولة إزالة الصفوف المكررة

delete myTable where pkcol = 1;

عائدات:

ORA-01502: الفهرس "MYTABLE.PK_MT" أو تقسيم هذا الفهرس في حالة صالحة للاستعمال.

أنا أستخدم Oracle.DataAccess.Client.OracleBulkCopy لملء الجدول.

بقدر ما أفهم التوثيق من Oracle يجب التحقق من القيود الأساسية.

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

الآن أستخدمه فقط بعد حذف جميع الصفوف وأنا أستخدم جدولًا بمفتاح أساسي مشابه كمصدر. ونتيجة لذلك لا أتوقع أي مشاكل.

ولكن مضمنة في عمق مخطوطات MS Build الخاصة بي ، ينتهي بي الأمر بتكرارين فقط من أصل 2210 صفًا.

أعتقد أن تجاهل المفتاح الأساسي في المقام الأول خطأ واضح. يجب عدم السماح للنسخة المجمعة بتجاهل قيود المفتاح الأساسي.

تحرير:

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

6
bernd_k

من الوثائق التي ترتبط بها :

يتم التحقق من قيود فريدة عند إعادة بناء الفهارس في نهاية الحمل. يتم ترك الفهرس في حالة "فهرس غير قابل للاستخدام" إذا كان ينتهك قيودًا فريدة.

الطريقة التي قرأتها ، وينطبق الشيء نفسه على PRIMARY KEY القيود على الرغم من أن الصياغة غامضة بعض الشيء. قد لا تحب هذا السلوك ، ولكنه ليس "خطأ" لأنه يتصرف كما هو مصمم - وهناك طرق أخرى ينتهي بهذا النوع من القيود "المعطلة".

انظر منشور OTN هذا لمزيد من المعلومات ومنهج قد يعمل بشكل أفضل بالنسبة لك باستخدام pl/sql و forall ... save exceptions.

5
Jack says try topanswers.xyz

واجهت مشكلة مماثلة.

إذا كنت بحاجة للتخلص من الخطأ ، فقم بما يلي:

SELECT 'ALTER INDEX '||OWNER||'.'||INDEX_NAME||' REBUILD;'
FROM DBA_INDEXES
WHERE STATUS = 'UNUSABLE';

هذا سيخرج ALTER INDEX ... REBUILD; عبارات لجميع الفهارس "غير القابلة للاستخدام". قم بتشغيلها ، بحيث تكون الفهارس "قابلة للاستخدام" مرة أخرى.

(تم النسخ بدون خجل من: http://www.squaredba.com/ora-01502-index-or-partition-of-such-index-is-in-unusable-state-145.html : -))

8
Frosty Z