USER तालिका में शायद इसका उल्लेख करने वाली बहुत सी विदेशी कुंजियाँ हैं। यदि उनमें से कोई भी अनुक्रमित नहीं है, तो ओरेकल पूरी चाइल्ड टेबल को लॉक कर देगा, जबकि यह पैरेंट टेबल से पंक्ति को हटा देता है। यदि एक ही समय में एक से अधिक कथन चलते हैं, तो एक अलग उपयोगकर्ता के लिए भी, वही चाइल्ड टेबल लॉक हो जाएगी। चूंकि उन पुनरावर्ती संचालनों के क्रम को नियंत्रित नहीं किया जा सकता है, इसलिए यह संभव है कि कई सत्र समान संसाधनों को एक अलग क्रम में लॉक कर दें, जिससे गतिरोध पैदा हो जाए।
देखें यह अनुभाग अधिक जानकारी के लिए कॉन्सेप्ट मैनुअल में।
इसे हल करने के लिए, अनुक्रमणिका को किसी भी गैर-अनुक्रमित विदेशी कुंजी में जोड़ें। यदि कॉलम नाम मानक हैं तो इस तरह की एक स्क्रिप्ट संभावित उम्मीदवारों को खोजने में आपकी मदद कर सकती है:
--Find un-indexed foreign keys.
--
--Foreign keys.
select owner, table_name
from dba_constraints
where r_constraint_name = 'USER_ID_PK'
and r_owner = 'THE_SCHEMA_NAME'
minus
--Tables with an index on the relevant column.
select table_owner, table_name
from dba_ind_columns
where column_name = 'USER_ID';