سؤال

لدي تتبع من جهاز حيث يبدو أن الاستعلام التالي معلق لعدة أيام:

SELECT table_name FROM user_tables

ما الذي يمكن أن يولد مثل هذا القفل?لا يمكن للمستخدمين تعديل هذا الجدول;وكان هناك الكثير من الحالات اللاحقة لهذا الاستعلام التي تم تشغيلها بنجاح.

هل كانت مفيدة؟

المحلول

لذا ، بما أن الحالة لم تعد موجودة ، فلا توجد طريقة لمعرفة ما حدث.

ومع ذلك ، في المستقبل ، إذا حدث هذا أو شيء مشابه مرة أخرى ، فستحتاج إلى استخدام واجهة انتظار أوراكل.هذا هو ، انظر إلى V$SESSION.

أولا ، ستحتاج إلى تحديد ما إذا كانت العملية تدور (أي على وحدة المعالجة المركزية) أو تمنع (أي الانتظار في حدث انتظار).طريقة لتحديد ذلك ، هو أن ننظر إلى STATE العمود:

  • إذا كانت الدولة 'WAITING', ، ثم يتم حظر الجلسة.إذا كان الأمر كذلك ، فيجب أن يصف عمود الحدث الحدث الذي تنتظره الجلسة.
  • إذا كانت الدولة هي شيء آخر غير 'الانتظار' ، ثم الدورة على وحدة المعالجة المركزية ، وعمود الحدث هو آخر شيء أنه انتظر على.
    • إذا كانت الدولة 'WAITED KNOWN TIME', ، ثم وقت الانتظار هو الوقت المنتظر بالسنتي ثانية.
    • إذا كانت الدولة 'WAITED SHORT TIME', ، ثم انتظرت الجلسة أقل من سنتي ثانية.
    • إذا كانت الدولة 'WAITED UNKNOWN TIME', ، ثم الوقت المنتظر غير معروف لأنه تم تعيين الإحصائيات الزمنية على خطأ للجلسة.

نأمل أن يساعد.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top