بتاريخ: 9 نوفمبر 201015 سنة comment_203313 السلام عليكم إخوانيأنا أعمل كاديفيلوبير واحيانا بيحصل عندي lock وأحيانا اخرى بيكون عندي ريبورتات بتاخد وقت كبير جداكيف اعمل trace واسمع هذا المصطلح كثيرا وكيف اتتبع الlock شكرا جزيلا تقديم بلاغ
بتاريخ: 9 نوفمبر 201015 سنة comment_203318 اخى العزيز اما بالنسبه ل Trace فالموضوع كبير ويطول شرحه ..حاول تحدد عايز تعمل trace لايه ...وممكن تاخد معلومات عن الموضوع من هنــــــــــــــابخصوص موضوع ال Lock ...هنـــــــــــــــــاتحياتى تقديم بلاغ
بتاريخ: 9 نوفمبر 201015 سنة comment_203321 أخي الفاضل بداية ما كان لي أن أرد بعد رد المهندس الرائع أحمد حمدي لكونه أستاذنا جميعا بالفعل وبعد تلفي رسالتك دعني ادردش معك كما اسلف الموضوع المرفق lock في أبسط مفاهيمه وأنواعه أن في 2 sessions بيحاولوا بعملوا عملية علي جدول واحد او تعديل في بيان واحد طيب اوراكل حتصدق مين لو انت بتقولوا update ahmed's salery set it = 1000 وزميل لك بيقول update وخليه ب 2000 وانت ما عملتش commit قبل ما هو يعمل update بتعته الله؟لما ييجي يحفظ حيصدق مين فقالت اوراكل والله ما صدقه حد خاعمل قفل عليهم الاتنين لحد ما واخد يغير رايه وينسحب أو مدير قاعدة البيانات ينهي العمليه ويرجع واحد فيهم بس هو اللي يشتغل دا توضيح بسيط جدا لتقارب الموضوع تعالي نعمل مثال سوا انا مبرمج 1 فتحت وكتبت update tset set NAME ='ali';وانت من جهازك علي نفس الجدول رحت تعمل نفس الكلام update tset set NAME ='tamer';تمام؟لا مش تمام مجرد ما تكتب الامر ال session الخاصة بك حتقف ومن يأتي صويت الموظفين الحق النظام hang علشان الموضوع يحل الاول لو عمل commit; فورا الثاني مشكلته اتحلت واشتغل زي الفل لانه ما عاد فيه lock لا خلينا تاني نرجع للحاله الاولي يعني فيه lock نعمل ايه ممكن تستخدم ال script التاليه حيطلع لك الاتنين اللي خابطين بعض script that shows locks select session_id "sid",SERIAL# "Serial", substr(object_name,1,20) "Object", substr(os_user_name,1,10) "Terminal", substr(oracle_username,1,10) "Locker", nvl(lockwait,'active') "Wait", decode(locked_mode, 2, 'row share', 3, 'row exclusive', 4, 'share', 5, 'share row exclusive', 6, 'exclusive', 'unknown') "Lockmode", OBJECT_TYPE "Type" FROM SYS.V_$LOCKED_OBJECT A, SYS.ALL_OBJECTS B, SYS.V_$SESSION c WHERE A.OBJECT_ID = B.OBJECT_ID AND C.SID = A.SESSION_ID ORDER BY 1 ASC, 5 Desc / النتيجة sid Serial Object Terminal Locker Wait Lockmode--------- --------- -------------------- ---------- ---------- -------- -------------------Type------------------- 141 57006 TSET Administra TEST active row exclusiveTABLE 157 6052 TSET Administra TEST active row exclusiveTABLEلاحظ الاول له sid ورقمه 141 وله serial# وهو 57006 انت كمدير قاعدة بيانات حابب تنهي اتصالهم لانه ممكن يعمل اضافة بيان فاتورة ويروح وزميله عاوز يعدل علي الفاتوره دي مش حيعرف الا لما ييجي الاول الصباح أو انت كمدير قاعدة بيانات تنهي اتصال اللي ساب الدنيا واقفه من غير ما يحفظ وروح ALTER SYSTEM KILL SESSION 'sid,serial#'; زي SQL> ALTER SYSTEM KILL SESSION '157,6052'; بالتالي sessions can be killed locking أرجوا ان اكون قد أجبت علي تساؤلك في رسالتك الخاصة لي والله الموفق تقديم بلاغ
بتاريخ: 9 نوفمبر 201015 سنة كاتب الموضوع comment_203323 أخي الكريم احمد حمدي معلشي الرابط الاول لايعمل وجزاك الله كل خير--------------استاذنا أحمد عبدالمجيد بارك الله بكوماذا عن ال trace تقديم بلاغ
بتاريخ: 10 نوفمبر 201015 سنة comment_203459 السلام عليكم ورحمة الله وبركاته في البدايه أحب أشكر مشرفينا الكرام على ردودهم وأحب أضيف أنا استخدم هذه الطريقه إن شاء الله إنها تفيدك كيف أعرف إنه عندي deadlock من خلال الإستعلام اللي في الأسفل إذا فيه deadlock راح يرجع بيانات select * from v$LOCK where request>0 or block>0 REQUEST:Lock mode in which the process requests the lock: 0 - none 1 - null (NULL) 2 - row-S (SS) 3 - row-X (SX) 4 - share (S) 5 - S/Row-X (SSX) 6 - exclusive (X)BLOCK:The lock is blocking another lock----------------------------------------------طيب كيف اتبع deadlock لقيت مثال إن شاء الله يفيدك على الرابط التالي http://www.oracle-base.com/articles/misc/Deadlocks.php تقديم بلاغ
بتاريخ: 20 نوفمبر 201015 سنة comment_203869 بل الشكر لك وعلي مجهودك الرائع ... نتمني أن نجدك دوما تقديم بلاغ
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.