The following articles mainly introduce a more efficient method to achieve Oracle deadlock. The following describes the specific solution. If you are interested in the actual operations, you can click to view the following articles. I hope it will help you in this regard.
1. Check which process is locked
Check the V $ DB_OBJECT_CACHE View:
- SELECT * FROM V$DB_OBJECT_CACHE WHERE OWNER='
Process owner 'and locks! = '0 ';
2. query which SID is used to identify which SESSION.
Check the V $ ACCESS View:
- SELECT * FROM V$ACCESS WHERE OWNER='
Process owner 'and name = 'process NAME just found ';
3. Identify SID and SERIAL #
Check the V $ SESSION View:
- SELECT SID,SERIAL#,PADDR FROM V$SESSION WHERE SID='
SID you just found'
View V $ PROCESS:
- SELECT SPID FROM V$PROCESS WHERE ADDR='
PADDR we just found ';
4. Kill processes
(1) first kill the Oracle process:
- ALTER SYSTEM KILL SESSION '
SID, SERIAL #';
(2). You can use the CMD console to kill operating system processes:
ORAKILL database implements the SPID just found
Remember to write down the Oracle deadlock we have detected and Kill it one by one. If the Kill is not clean, the problem still cannot be solved.