Anonim

سوف تتعرف mavens قاعدة البيانات على اسم Oracle كمصدر قوة في نظام إدارة قواعد البيانات العلائقية (DBMS). لقد أنتجت شركة Oracle حلولًا كبيرة جدًا لقواعد بيانات إدارة قواعد البيانات (DBMS) على مدار عقود وتظل رائدة في هذا المجال. قد يتم إرباك العديد من المستخدمين النهائيين لمنتجات قواعد البيانات أو حيرهم عند استخدامهم لحل محدد مسبقًا ويقوم بإنشاء رسالة خطأ. إحدى رسائل الخطأ الشائعة التي تنتجها Oracle هي الخطأ ORA-06512.

انظر أيضا مقالتنا كيفية إصلاح خطأ 00942 أورا

أوراكل هو نظام لإدارة قواعد البيانات كان موجودًا منذ أربعين عامًا بأشكال مختلفة. كانت تستخدم في الأصل ما يسمى مخطط SCOTT ، والذي سمي على اسم أحد الموظفين الأصليين لشركة أوراكل. لقد قمت حتى بتسجيل الدخول إلى Oracle لأول مرة باستخدام اسم المستخدم "scott" وكلمة المرور "tiger" والتي سميت باسم Cat's cat. يوجد الآن العديد من المخططات المستخدمة وفقًا لما تستخدمه Oracle من أجل.

إذا كنت ترغب في معرفة المزيد حول Oracle من الألف إلى الياء ، فهذه الصفحة مفيدة للغاية.

إصلاح أخطاء ORA-06512

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

على سبيل المثال ، قد تقرأ رسالة خطأ نموذجية:

"ORA-01422: إرجاع الجلب الدقيق أكثر من عدد الصفوف المطلوبة

ORA-06512: في "DATABASE_NAME" ، السطر 66

ORA-06512: في السطر 1 ″

يخبرك السطر الأول بنوع الخطأ الذي يحدث ، في هذه الحالة ، يقوم الاستعلام بإرجاع بيانات أكثر مما يتوقع الاستعلام حتى لا يعرف كيفية معالجته. رمز "ORA-01422" هو رمز الخطأ الفعلي الذي يجب أن تبحث عنه. ORA-06512 هو مجرد رمز خطأ عام.

يخبرك السطر الثاني بمكان حدوث الخطأ. ستكون DATABASE_NAME قاعدة البيانات التي تعمل بها في ذلك الوقت. السطر 66 هو الخط الذي يحدث فيه الخطأ وهو الخط الذي تحتاج إلى التحقق منه لتصحيح الخطأ.

يخبرك السطر الثالث في بناء جملة الخطأ من أين تأتي المكالمة. حدد السطر الأول وسترى مكالمة إلى DATABASE_NAME.

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

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

تتوقع أكثر من صف واحد:

لـ X in (حدد * من t حيث …)

عقدة

- معالجة سجل X هنا

حلقة النهاية ؛

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

إذا كنت تتوقع فقط إرجاع صف واحد ، يمكنك محاولة:

ابدأ

حدد * إلى …

من أين

معالجة….

استثناء

عندما NO_DATA_FOUND ذلك الحين

خطأ في معالجة التعليمات البرمجية عند العثور على أي سجل

عندما TOO_MANY_ROWS ثم

خطأ في معالجة التعليمات البرمجية عند العثور على الكثير من السجلات

النهاية؛

يجب أن توفر هذه الطريقة الثانية صفًا واحدًا فقط دون رمي "ORA-01422: يؤدي الجلب الدقيق إلى إرجاع الخطأ أكثر من العدد المطلوب من الصفوف وبالتالي الخطأ ORA-06512 الأصلي.

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

أعلن

C1 المؤشر لتحديد * من ر حيث …

ابدأ

فتح c1 ؛

جلب C1 إلى ..

إذا (c1 ٪ غير موجود) بعد ذلك

خطأ في معالجة لعدم العثور على سجل

إنهاء إذا؛

وثيقة c1 ؛

النهاية؛

(إذا كنت تعرف SQL ، فربما تكون مرتبكًا بعض الشيء من خلال أسطر الأوامر هذه … لا تستخدم Oracle Transact-SQL ولكنها امتداد لغة إجرائية خاصة بـ SQL و PL / SQL. بينما تشبه Transact-SQL ، فإن PL / SQL لا الكثير من الأشياء الذكية وهي أداة قوية جدًا بحد ذاتها. قد تجد هذه الأسئلة الشائعة PL / SQL مفيدة عند محاولة التعرف على Oracle.)

لذا فإن الدرس الأساسي هنا هو خطأ ORA-06512 ، بحد ذاته ، ليس شيئًا يمكنك إصلاحه مباشرة. بدلاً من ذلك ، يتعين عليك معرفة ماهية الخطأ الفعلي ، والذي ستخبرك به رموز الأخطاء الأخرى ، ثم تعالج هذه الأخطاء واحداً تلو الآخر.

هل لديك أي نصائح أو الحيل أوراكل للمشاركة؟ واسمحوا لنا أن نعرف عنها في التعليقات!

كيفية إصلاح أخطاء أورا 06512 في أوراكل ديسيبل