Bảng USER có thể có rất nhiều khóa ngoại đề cập đến nó. Nếu bất kỳ cái nào trong số chúng chưa được lập chỉ mục, Oracle sẽ khóa toàn bộ bảng con trong khi nó xóa hàng khỏi bảng mẹ. Nếu nhiều câu lệnh chạy cùng một lúc, ngay cả với một người dùng khác, các bảng con giống nhau sẽ bị khóa. Vì không thể kiểm soát thứ tự của các hoạt động đệ quy đó nên có thể nhiều phiên sẽ khóa các tài nguyên giống nhau theo một thứ tự khác nhau, gây ra bế tắc.
Xem phần này trong sổ tay Khái niệm để biết thêm thông tin.
Để giải quyết vấn đề này, hãy thêm chỉ mục vào bất kỳ khóa ngoại nào chưa được lập chỉ mục. Nếu tên cột là tiêu chuẩn, một tập lệnh như thế này có thể giúp bạn tìm thấy các ứng cử viên tiềm năng:
--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';