मेरे 3-नोड Oracle RAC डेटाबेस (संस्करण 11.2.0.4) में एक गतिरोध की सूचना दी जा रही है जैसा कि अलर्ट लॉग में देखा जा सकता है। यह एक Oracle RAC डेटाबेस होने के कारण, संसाधनों को विश्व स्तर पर प्रबंधित किया जाता है और लॉक मैनेजर डेमॉन (LMD) शामिल हो जाता है। अलर्ट लॉग में संदेश ने मुझे एक एलएमडी ट्रेस फ़ाइल की ओर इशारा किया जिसमें यह ग्लोबल वेट-फॉर-ग्राफ (GWFG) था।
*** 2015-02-27 04:16:33.183 Submitting asynchronized dump request [1c]. summary=[ges process stack dump (kjdglblkrdm1)]. Global blockers dump end:----------------------------------- Global Wait-For-Graph(WFG) at ddTS[0.394d] : BLOCKED 0x551b2c698 2 wq 2 cvtops x1 TM 0x11ffa3.0x0(ext 0x0,0x0)[6B000-0004-0000022D] inst 4 BLOCKER 0x5513ed318 2 wq 2 cvtops x1 TM 0x11ffa3.0x0(ext 0x0,0x0)[B6000-0006-00000099] inst 6 BLOCKED 0x5513ed318 4 wq 2 cvtops x1 TM 0x11ffa3.0x0(ext 0x0,0x0)[B6000-0006-00000099] inst 6 BLOCKER 0x5513ef5b8 4 wq 2 cvtops x1 TM 0x11ffa3.0x0(ext 0x0,0x0)[66000-0005-00000FDB] inst 5 BLOCKED 0x5513ef5b8 4 wq 2 cvtops x1 TM 0x11ffa3.0x0(ext 0x0,0x0)[66000-0005-00000FDB] inst 5 BLOCKER 0x551b2c698 4 wq 2 cvtops x1 TM 0x11ffa3.0x0(ext 0x0,0x0)[6B000-0004-0000022D] inst 4 * Cancel deadlock victim lockp 0x551b2c698
नोट: हो सकता है कि वास्तविक SQL और कुछ अन्य विवरण निर्दोषों की सुरक्षा के लिए बदले गए हों।
तो वहां मेरे पास गतिरोध में 3 सत्र शामिल हैं। उदाहरण के लिए एक-एक आईडी 4, 5 और 6।
मैं इंस्टेंस आईडी 4 पर उत्पन्न ट्रेस फ़ाइल को देख रहा था। GWFG के ऊपर यह जानकारी थी:
user session for deadlock lock 0x551b2c698 sid: 1727 ser: 539 audsid: 996549224 user: 13944/MP_SYS flags: (0x41) USR/- flags_idl: (0x1) BSY/-/-/-/-/- flags2: (0x40009) -/-/INC pid: 107 O/S info: user: oracle, term: UNKNOWN, ospid: 11229 image: [email protected] client details: O/S info: user: web-svc, term: web-server1, ospid: 4276:864 machine: DOMAIN\web-server1 program: iis.exe client info: user: WEBSERVICE current SQL: INSERT INTO MP_SYS.T2( column_list) SELECT column_list FROM MP_SYS.T1 WHERE MP_SYS.T1.P_ID=:B1 DUMP LOCAL BLOCKER: initiate state dump for DEADLOCK possible owner[107.11229] on resource TM-0011FFA3-00000000
इसलिए मैं मशीन, प्रोग्राम और SQL स्टेटमेंट को निष्पादित किए जाने के बारे में जानकारी देख सकता हूं। ऊपर लाल रंग में उपयोगकर्ता सत्र पहचानकर्ता GWFG में आईडी मान से मेल खाता है। आइए फिर से GFWG की पहली दो पंक्तियों को देखें।
BLOCKED 0x551b2c698 2 wq 2 cvtops x1 TM 0x11ffa3.0x0(ext 0x0,0x0)[6B000-0004-0000022D] inst 4 BLOCKER 0x5513ed318 2 wq 2 cvtops x1 TM 0x11ffa3.0x0(ext 0x0,0x0)[B6000-0006-00000099] inst 6
तो SQL कथन और सत्र विवरण इस पहली पंक्ति से मेल खाते हैं। यह सत्र 4 पर अवरुद्ध है। अवरोधक inst6 पर है और इसकी पहचान 0x5513ed318 के रूप में की गई है। . अच्छा यह कौन है? इस GWFG में BLOCKER के साथ हमारी सहायता करने के लिए कोई अन्य विवरण नहीं है।
अवरोधक के बारे में अधिक जानने के लिए, मैं 6 वें स्थान पर गया और यह किया:
cd /u01/app/oracle/diag/rdbms/admin/orcl/orcl6/trace
grep 0x5513ed318 *
इसलिए मैंने सत्र की पहचान मूल्य पर एक grep किया और उसे LMD ट्रेस फ़ाइल दी गई। दूसरे उदाहरण पर उस एलएमडी ट्रेस फ़ाइल को देखने से मुझे अवरुद्ध सत्र के बारे में विवरण मिलता है।
user session for deadlock lock 0x5513ed318 sid: 1206 ser: 2673 audsid: 996459926 user: 13944/MP_SYS flags: (0x41) USR/- flags_idl: (0x1) BSY/-/-/-/-/- flags2: (0x40009) -/-/INC pid: 182 O/S info: user: oracle, term: UNKNOWN, ospid: 7049 image: [email protected] client details: O/S info: user: web-svc, term: web-server2, ospid: 4276:864 machine: DOMAIN\web-server2 program: iis.exe client info: user: WEBSERVICE current SQL: DELETE FROM MP_SYS.T1 WHERE P_ID = :B1 DUMP LOCAL BLOCKER: initiate state dump for DEADLOCK possible owner[182.7049] on resource TM-0011FFA3-00000000
मैं देख सकता हूं कि अवरुद्ध सत्र एक टेबल पर INSERT स्टेटमेंट जारी कर रहा था और ब्लॉकर उसी टेबल पर DELETE जारी कर रहा था।
इसमें एक और सत्र शामिल है लेकिन इस समय, उपरोक्त चरणों का उपयोग करके सत्र विवरण प्राप्त करना प्राथमिक है।
उम्मीद है, इस ब्लॉग प्रविष्टि ने दिखाया है कि SQL कथनों और वैश्विक गतिरोध में शामिल वस्तु का निदान करने के लिए GWFG का उपयोग कैसे करें। मुझे पता है कि गतिरोध में शामिल सटीक SQL कथन, और विस्तार से, इसमें शामिल वस्तुएं भी शामिल हैं। समस्या का समाधान एकल-आवृत्ति डेटाबेस में गतिरोध समाधान से अलग नहीं है।
Oracle RAC Global Enqueue Services (GES) के बारे में अधिक जानकारी के लिए, मेरी Oracle RAC प्रदर्शन ट्यूनिंग पुस्तक का अध्याय 2 पढ़ें।