मुझे अक्सर "एप्लिकेशन की प्रतीक्षा करते समय यह" ओआरए 00060 डेडलॉक पता चला है "त्रुटि अक्सर मेरे एप्लिकेशन में जब एकाधिक उपयोगकर्ता एप्लिकेशन का उपयोग कर रहे हैं। मुझे ऑरैक एडमिन से ट्रेस फ़ाइल मिली है, लेकिन इसे पढ़ने में मदद की ज़रूरत है। नीचे ट्रेस फ़ाइल से डेटा की बिट्स है, जो मुझे उम्मीद है कि कारण तलाशने में मदद मिलेगी।ऑरैकल ट्रेस फ़ाइल से डेडलॉक त्रुटि का कारण ढूंढना
*** 2013-06-25 09:37:35.324
DEADLOCK DETECTED (ORA-00060)
[Transaction Deadlock]
The following deadlock is not an ORACLE error. It is a deadlock due
to user error in the design of an application
or from issuing incorrect ad-hoc SQL. The following
information may aid in determining the deadlock:
Deadlock graph:
---------Blocker(s)-------- ---------Waiter(s)---------
Resource Name process session holds waits process session holds waits
TM-000151a2-00000000 210 72 SX SSX 208 24 SX SSX
TM-000151a2-00000000 208 24 SX SSX 210 72 SX SSX
session 72: DID 0001-00D2-000000C6 session 24: DID 0001-00D0-00000043
session 24: DID 0001-00D0-00000043 session 72: DID 0001-00D2-000000C6
Rows waited on:
Session 72: no row
Session 24: no row
----- Information for the OTHER waiting sessions -----
Session 24:
sid: 24 ser: 45245 audsid: 31660323 user: 90/USER
flags: (0x45) USR/- flags_idl: (0x1) BSY/-/-/-/-/-
flags2: (0x40009) -/-/INC
pid: 208 O/S info: user: zgrid, term: UNKNOWN, ospid: 2439
image: [email protected]
client details:
O/S info: user: , term: , ospid: 1234
machine: xyz.local program:
current SQL:
delete from EMPLOYEE where EMP_ID=:1
----- End of information for the OTHER waiting sessions -----
Information for THIS session:
----- Current SQL Statement for this session (sql_id=dyfg1wd8xa9qt) -----
delete from EMPLOYEE where EMP_ID=:1
===================================================
अगर कोई मुझे बता सकता है कि "डेडलॉक ग्राफ ::" क्या कह रहा है तो मैं सराहना करता हूं। अनुभाग में इंतजार की गई पंक्तियों में कोई पंक्ति नहीं है।
मैंने कुछ ब्लॉगों में भी पढ़ा है कि ट्रेस फ़ाइल से "sqltxt" खंड कारण का सुझाव दे सकता है। नीचे वह प्रश्न है जो मैं उस खंड में देखता हूं।
select /*+ all_rows */ count(1) from "USERS"."EMPLOYEE_SALARY" where EMPSAL_EMP_ID=:1
employee_salary तालिका EMPSAL_EMP_ID स्तंभ पर foreignkey बाधा है।
एसक्यूएल संकेत "all_rows" कहता है, तो क्या इसका मतलब यह है कि कर्मचारी तालिका से रिकॉर्ड हटाने पर यह तालिका तालिका स्तर लॉक हो जाती है? मेरे पास वर्तमान में विदेशी कुंजी कॉलम पर एक अनुक्रमणिका नहीं है। इस कॉलम सहायता पर एक इंडेक्स जोड़ना होगा?
कृपया पोस्ट करें, अगर किसी और जानकारी की आवश्यकता हो तो कृपया पोस्ट करें।
धन्यवाद
ओरेकल में लॉक मोड पर अच्छा विषय: http://www.soug.ch/fileadmin/user_upload/Newsletter/NL_public/NL_2013_1_Award_Article.pdf ऐसा लगता है कि आप 'USERS.EMPLOYEE_SALARY.EMPSAL_EMP_ID' कॉलम और विदेशी बाधा के साथ इंडेक्स को याद करते हैं 'कैस्केड हटाएं' पर। – ThinkJet
ऐसा लगता है कि आपके पास एक ही पंक्ति को हटाने का प्रयास करने वाले दो सत्र हैं। – haki