1.查哪个过程被锁
查V$DB_OBJECT_CACHE视图:SELECT * FROM V$DB_OBJECT_CACHE WHERE OWNER='过程的所属用户' AND CLOCKS!='0';2. 查是哪一个SID,通过SID可知道是哪个SESSION查V$ACCESS视图:SELECT * FROM V$ACCESS WHERE OWNER='过程的所属用户' AND NAME='刚才查到的过程名';3. 查出SID和SERIAL#查V$SESSION视图:SELECT SID,SERIAL#,PADDR FROM V$SESSION WHERE SID='刚才查到的SID'查V$PROCESS视图:SELECT SPID FROM V$PROCESS WHERE ADDR='刚才查到的PADDR';4. 杀进程(1).先杀Oracle进程:ALTER SYSTEM KILL SESSION '查出的SID,查出的SERIAL#';IXDBA.NET社区论坛(2).再杀操作系统进程:KILL -9 刚才查出的SPID或者用ORAKILL(刚才查出的SID和SPID)
查V$DB_OBJECT_CACHE视图:SELECT * FROM V$DB_OBJECT_CACHE WHERE OWNER='过程的所属用户' AND CLOCKS!='0';2. 查是哪一个SID,通过SID可知道是哪个SESSION查V$ACCESS视图:SELECT * FROM V$ACCESS WHERE OWNER='过程的所属用户' AND NAME='刚才查到的过程名';3. 查出SID和SERIAL#查V$SESSION视图:SELECT SID,SERIAL#,PADDR FROM V$SESSION WHERE SID='刚才查到的SID'查V$PROCESS视图:SELECT SPID FROM V$PROCESS WHERE ADDR='刚才查到的PADDR';4. 杀进程(1).先杀Oracle进程:ALTER SYSTEM KILL SESSION '查出的SID,查出的SERIAL#';IXDBA.NET社区论坛(2).再杀操作系统进程:KILL -9 刚才查出的SPID或者用ORAKILL(刚才查出的SID和SPID)
SELECT * FROM V$DB_OBJECT_CACHE WHERE OWNER='过程的所属用户' AND CLOCKS!='0'这个是不对的.....这个只是查那些对象持有锁了,并不一定是死锁.....
select L.XIDUSN,L.XIDSLOT,L.OBJECT_ID,L.LOCKED_MODE,O.OBJECT_NAME
from v$locked_object L,dba_objects O
where L.object_id=O.OBJECT_ID;查死锁主要查v$locked_object