查看session操作状态
SELECT
*
FROM
V$DB_OBJECT_CACHE
WHERE
OWNER
=
'
过程的所属用户
'
AND
LOCKS
!=
'
0
'
;
SELECT
*
FROM
V$ACCESS
WHERE
OWNER
=
'
过程的所属用户
'
AND
NAME
=
'
刚才查到的过程名
'
;
SELECT
SID,SERIAL#,PADDR
FROM
V$SESSION
WHERE
SID
=
'
刚才查到的SID
'
SELECT
SPID
FROM
V$PROCESS
WHERE
ADDR
=
'
刚才查到的PADDR
'
;
ALTER
SYSTEM
KILL
SESSION
'
查出的SID,查出的SERIAL#
'
;
KILL
-
9
刚才查出的SPID
或
ORAKILL 刚才查出的SID 刚才查出的SPID
经常在oracle的使用过程中碰到这个问题,所以也总结了一点解决方法:)
1
)查找死锁的进程:
sqlplus "
/
as
sysdba"
SELECT
s.username,l.
OBJECT_ID
,l.SESSION_ID,s.SERIAL#,l.ORACLE_USERNAME,l.OS_USER_NAME,l.PROCESS
FROM
V$LOCKED_OBJECT l,V$SESSION S
WHERE
l.SESSION_ID
=
S.SID;
2
)kill掉这个死锁的进程:
alter
system
kill
session ‘sid,serial#’; (其中sid
=
l.session_id)
3
)如果还不能解决,
select
pro.spid
from
v$session ses,v$process pro
where
ses.sid
=
XX
and
ses.paddr
=
pro.addr;
其中sid用死锁的sid替换。
exit
ps
-
ef
|
grep spid
其中spid是这个进程的进程号,kill掉这个Oracle进程。
SELECT * FROM v$session_wait
WHERE event<>'rdbms ipc message'
AND event<>'SQL*Net message from client'
AND event<>'pmon timer'
AND event<>'smon timer'
方法一:
1.查哪个过程被锁
查V$DB_OBJECT_CACHE视图:


2. 查是哪一个SID,通过SID可知道是哪个SESSION.
查V$ACCESS视图:


3. 查出SID和SERIAL#
查V$SESSION视图:


查V$PROCESS视图:


4. 杀进程
(1).先杀ORACLE进程:


(2).再杀操作系统进程:



方法二:











