تم النشر منذ 31 Jan 2014 بسم الله الرحمن الرحيم ان شاء اله هنتكلم على ال Lock عندنا نوعين من ال Lock بيحصلوافى حالة ان User1 بيعمل الجمله الآتيهUPDATE EmployeesSET Salary =5000;دا اسمه Table Level lockو دا بيسبب ان User2 او اى حد هيشتغل على اى Row فى ال Table هيفضل منتظر لحد ما User1 يقفل ال Transaction المفتوحه ب Commit او Rollback و النوع التانىفى حالة ان User1 بيعمل الجمله الآتيهUPDATE EmployeesSET Salary =5000WHERE 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$SessionV$LockV$Sql SELECT L.SID, S.SERIAL#, S.STATE, S.EVENT, S.WAIT_TIME, S.USERNAME, S.OSUSER, S.MACHINE, S.PROGRAM, C.SQL_FULLTEXTFROM V$lock L JOIN V$session SON (L.SID = S.SID)JOIN V$sql CON (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; 0 شارك هذا الرد رابط المشاركة شارك الرد من خلال المواقع ادناه
قام بالرد منذ 11 Nov 2020 بارك الله فيك 0 شارك هذا الرد رابط المشاركة شارك الرد من خلال المواقع ادناه