إنتقال للمحتوى

  • تسجيل الدخول عبر الفيس بوك تسجيل الدخول عبر تويتر Log In with LinkedIn Log In with Google      تسجيل دخول    
  • إنشاء حساب

صورة
- - - - -

لماذا يتأخر تنفيذ هذا الكود؟


10 رد (ردود) على هذا الموضوع

#1 hearthouse

hearthouse

    مشترك

  • الأعضــاء
  • 121 مشاركة

تاريخ المشاركة 14 January 2007 - 12:52 PM

اصدقائى فعلا الاوراكل تشيب ... ممكن حد يقول لى لماذا يتأخر تنفيذ هذا الكود و ياخد مدة حوالى 10 دقايق عشان يشتغل ليه ده كله

delete from employees


OR


delete from employees where last_name='Higgins';



طيب ده كود عادى المفروض ان فى علاقة تربط الجدول بنفسه المفروض يظهر رسالة خطأ تفيد بأنه لا يمكن حذف Master record له ابناء في نفس الجدول

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

SET SERVEROUTPUT ON
declare
invalid_id exception;
pragma exception_init(invalid_id,-02292);
begin
delete from employees;
exception
when invalid_id then
DBMS_OUTPUT.PUT_LINE('There are some employees in');
end;

انا عارف انى تاعبكم معايا بالاكواد البايظة دى بس انا مش مبتدئ و الحاجات دى انا عملتها قبل كده... غشان كده الاوراكل مجننانى شوية

#2 ابو صالح

ابو صالح

    مشرف سابق وعضو مميز

  • المجموعة الماسية
  • 1,253 مشاركة
  • البـلـد: Country Flag
  • المنصب الحالي:(رحمه الله)

تاريخ المشاركة 14 January 2007 - 07:36 PM

بالنسبة للكود الاول ممكن تستخدم truncate table فهي اسرع ،،
اما الكود الثاني، هل هناك index على هذا العمود؟ اذا لم يكون موجود فيجب عليك انشائها والا سيقوم بعمل Full-Table Scan

<span style='font-size:11pt;line-height:100%'>
زكاة العلم نشرة

Oracle Certifed Expert, OCE RAC
Oracle Certified Professional OCP 9i,10g
ITIL v3

</span>


#3 amsh

amsh

    عضو

  • الأعضــاء
  • 20 مشاركة

تاريخ المشاركة 14 January 2007 - 08:45 PM

السلام عليكم
للمشاركة فقط وتوضيح لفكرة الأخ أبو صلاح
فإن عبارة delete تقوم بحذف جميع مافي الجدول-أو مايوافق الشرط- مع الحفاظ على المساحة المحجوزة
للجدول
أما بالنسبة لعبارةtruncate فانها تحذف المحتويات مع المساحة المحجوزة
وارجو التصحيح ان أخطأت
ولكم الشكر

#4 ابو صالح

ابو صالح

    مشرف سابق وعضو مميز

  • المجموعة الماسية
  • 1,253 مشاركة
  • البـلـد: Country Flag
  • المنصب الحالي:(رحمه الله)

تاريخ المشاركة 14 January 2007 - 10:38 PM

اشكرك اخي amsh ،،

نسيت ان اضيف تنبيه ، انه لاتستطيع ان تستخدم rollback مع truncate.

<span style='font-size:11pt;line-height:100%'>
زكاة العلم نشرة

Oracle Certifed Expert, OCE RAC
Oracle Certified Professional OCP 9i,10g
ITIL v3

</span>


#5 hearthouse

hearthouse

    مشترك

  • الأعضــاء
  • 121 مشاركة

تاريخ المشاركة 14 January 2007 - 11:41 PM

انت كده ما حليتش المشكلة ... انا عاوز استخدم delete مش المشكلة في حذف بيانات و خلاص .. لا يا اصدقائى . انا عاوز استخدم الـــ Exception و ده الغرض من الكود مش الفكرة ...

و على فكرة الكود اشتغل خلاص بس مش عارف ايه السبب؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟

تم التعديل بواسطة hearthouse, 14 January 2007 - 11:49 PM.


#6 hassan978hmk

hassan978hmk

    مشترك

  • الأعضــاء
  • 90 مشاركة

تاريخ المشاركة 15 January 2007 - 09:53 AM

ممكن السبب كان هناك LOCK على أحد سطور الجدول ناتج عن UPDATE مثلا.
طوبىّ لِمن إذا أُنعمَ عليه شكَر , وإذا ابتليَ صبَر , وإذا أذنَبَ استغفر , وإذا غضبَ حَلِم , وإذا حكَمَ عدَل

صورة

#7 eno_vec

eno_vec

    عضو

  • الأعضــاء
  • 26 مشاركة
  • البـلـد: Country Flag

تاريخ المشاركة 15 January 2007 - 02:59 PM

[b][color=#FF0000]ممكن تستخدم الكود ده لتسريع الجدول اللي فية المشكلة

[code=auto:0]ANALYZE TABLE EMPLYEE COMPUTE STATISTICS;

جرية على ال SQL PLUS و أرجو من الله أن يساعد هذا في حل المشكلة
[COLOR=green]youssef[B][FONT=Times][SIZE=1]

#8 hearthouse

hearthouse

    مشترك

  • الأعضــاء
  • 121 مشاركة

تاريخ المشاركة 15 January 2007 - 11:16 PM

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

#9 eno_vec

eno_vec

    عضو

  • الأعضــاء
  • 26 مشاركة
  • البـلـد: Country Flag

تاريخ المشاركة 17 January 2007 - 09:32 AM

المشكلة ممكن أن تكون في السرفر المتواجد عليه ال database
لو هي مشكلة بطئ عام ممكن تروح لل enterprise manager و تدخل على ال configuration من instance ثم تدخل على memory بس لازم تكون داخل ب sys user
ثم تقوم بتزويد حجم ال shared pool و ال data buffer cash

لو المشكلة بطئ في الجدول دة بس يبقى تروح تتأكد من أن علية index و تشوف حجم البيانات اللي عليه

ثم تستخدم الكود ده


ANALYZE TABLE EMPLYEE COMPUTE STATISTICS
;
[COLOR=green]youssef[B][FONT=Times][SIZE=1]

#10 unknown

unknown

    عضو

  • الأعضــاء
  • 3 مشاركة

تاريخ المشاركة 28 January 2007 - 12:37 AM

السلام عليكم ورحمة الله وبركاتة

اخي اردت ان اشارك واقول شئ

بالنسبة قد يحدث تاخير في عمليات الحذف والاضافة والتحديث

ولكن ما السبب

قد يكون احد الاسباب عمل فهارس علي الجدول index لان الفهارس يااخوة تبطي من عمليات الحذف والاضافة والتحديث
للجدول

اذا وجدنا مشكلة فما العمل ؟

يفضل عمل فهارس علي الجداول التاريخية historical table اي الجداول التي تحتوي علي بيانات التاريخة
مثل اسماء الموظفين وغيرها من الصفات الثابتة

ام الجداول التي يطلق عليها جداول العمليات التي يتم العمل عليها كل بداوم مثل حذف واضافة و تحديث فيفضل التقليل من الفهارس او عدم استخدامها حتي لا تؤثر علي سرعة العمل

اما بالنسبة لامر truncate فاحذروا يااخوه ان هذا الامر DDL
اي يتم الكتابة علي Data files مباشرتا وما معني ذلك ؟
معناه انك لان تستطيع الرجوع في الامر عن طريق rollback


وهذا علي حسب علمي والله اعلي واعلم
ان كان توفقيق من الله وان كان خطا فمني والشيطان
سبحان الله وبحمده سبحان الله العظيم

والسلام عليكم ورحمة الله وبركاتة

#11 a_m2

a_m2

    مشترك

  • الأعضــاء
  • 169 مشاركة
  • البـلـد: Country Flag

تاريخ المشاركة 10 February 2007 - 01:45 PM

السلام عليكم
للمشاركة فقط وتوضيح لفكرة الأخ أبو صلاح
فإن عبارة delete تقوم بحذف جميع مافي الجدول-أو مايوافق الشرط- مع الحفاظ على المساحة المحجوزة
للجدول
أما بالنسبة لعبارةtruncate فانها تحذف المحتويات مع المساحة المحجوزة
وارجو التصحيح ان أخطأت
ولكم الشكر


اخى كلامك ليس صحيح بالمره فعبارة delete وعبارة truncate الاثنان يقومان بحزف جميع ما فى الجدول او الحزف حسب الشرط مع بقاء تكوين الجدول كما هو اى يفرغان الجدول من البيانات فقط والفرق بينهما ان عبارة truncate لا يمكن عمل rollback لها اى انها تحذف حذف نهائى عكس عبارة delecte التى يمكن التراجع فيها