Một cách khả thi có thể là tăng INIT.ORA
tham số cho distributed_lock_timeout
đến một giá trị lớn hơn. Sau đó, điều này sẽ cung cấp cho bạn thời gian lâu hơn để quan sát v$lock
bàn vì ổ khóa sẽ tồn tại lâu hơn.
Để đạt được tự động hóa việc này, bạn có thể
-
Chạy một công việc SQL cứ sau 5-10 giây ghi lại các giá trị của
v$lock
hoặc truy vấn mà sandos đã đưa ở trên vào một bảng và sau đó phân tích nó để xem phiên nào đã gây ra khóa. -
Chạy
STATSPACK
hoặc mộtAWR
Báo cáo. Các phiên đã bị khóa sẽ hiển thị với thời gian trôi qua cao và do đó có thể được xác định.
v$session
có thêm 3 cột blocking_instance, blocking_session, blocking_session_status
có thể được thêm vào truy vấn ở trên để đưa ra bức tranh về những gì đang bị khóa.