• الإعلانات

    • فيصل الحربي

      تسجيل عضوية جديدة في المنتدى   01/31/2016

      السلام عليكم ورحمة الله وبركاته  عزيزي العضو الجديد :  حاليا رسالة الإيميل لتأكيد صحة إيميلكم تذهب للبريد العشوائي ( جاري حل المشكلة )  فإذا لم تجد رسالة التحقق من إيميلكم في صندوق الوارد لديكم إتجه للبريد العشوائي ( JUNK)  وقم بتفعيل إشتراككم من هناك   

البحث في المنتدى

Showing results for tags 'deadlock'.

  • البحث بالتاقات

    اكتب الكلمات المفتاحيه بينها علامه الفاصله
  • البحث بكاتب الموضوع

تم إيجاد 1 نتيجة

  1. بسم الله الرحمن الرحيم   ان شاء اله هنتكلم على ال Lock   عندنا نوعين من ال Lock بيحصلوا فى حالة ان User1 بيعمل الجمله الآتيه UPDATE Employees SET Salary =5000; دا اسمه Table Level lock و دا بيسبب ان User2 او اى حد هيشتغل على اى Row فى ال Table هيفضل منتظر لحد ما User1 يقفل ال Transaction المفتوحه ب Commit او Rollback   و النوع التانى فى حالة ان User1 بيعمل الجمله الآتيه UPDATE Employees SET Salary =5000 WHERE employee_id=150; دا اسمه Row Level lock و دا بيسبب ان User2 او اى حد هيشتغل على اى نفس ال  Row فى ال Table هيفضل منتظر لحد ما User1 يقفل ال Transaction المفتوحه ب Commit او Rollback   و هنعرف دلوقتى ازاى نجيب ال Session اللى عامله Lock و اسم المستخدم و اسم مستخدم الجهازو هو داخل و عمل ال Lock ببرنامج ايه SQL*Plus ولا SQL Developer مثلا و جمله ال SQL اللى عامله Lock دا سكريبت فيه اغلب اللى هنحتاجه  السكريبت مبنى على اكتر من Dynamic View و هم v$lock, v$session, v$sql و تقدروا تشوفوا معلومات اكتر عنهم من: V$Session V$Lock V$Sql   SELECT L.SID, S.SERIAL#, S.STATE, S.EVENT, S.WAIT_TIME, S.USERNAME, S.OSUSER,  S.MACHINE, S.PROGRAM, C.SQL_FULLTEXT FROM V$lock L  JOIN V$session S ON (L.SID = S.SID) JOIN V$sql C ON (C.SQL_ID = S.SQL_ID) WHERE L.block > 0;   و بعد ما نعرف كل المعلومات عن ال Lock لو ال User ما عملش Commit او Rollback لازم ادخل اعمل Kill لل Session اللى مسببه ال Lock عشان اعمل Kill بحتاج من السكريبت السابق حاجتين L.SID & S.SERIAL#   و بستخدمهم فى الأمر اللى تحت Alter System Kill session 'L.SID,S.SERIAL#' immediate;