1.查询到正在相关资源。
select a.object_name objectname,
b.session_id,
c.serial#,
c.program program,
c.username username,
c.command,
c.machine machine,
c.lockwait
from all_objects a, v$locked_object b, v$session c
where a.object_id = b.object_id
and c.sid = b.session_id;
比如以下内容:
OBJECTNAME SESSION_ID SERIAL# PROGRAM USERNAME COMMAND MACHINE LOCKWAIT
------------------------------------------------------------------------------------------------------------------------------------------------------------
1 BILL_DATA 53 12 oracle@rac1 (J003) TANG 3 rac1
2 BILL_EXTAND_CO 53 12 oracle@rac1 (J003) TANG 3 rac1
3 BILL_EXTAND_IND 53 12 oracle@rac1 (J003) TANG 0 rac1
4 BILL_EXTAND_AR 53 12 oracle@rac1 (J003) TANG 2 rac1
5 BILL_EXTAND_US 53 12 oracle@rac1 (J003) TANG 3 rac1
6 BILL_DATA 53 12 oracle@rac1 (J003) TANG 2 rac1
7 MIGRATE_LOG 53 12 oracle@rac1 (J003) TANG 2 rac1
8 STAT_DATA 180 217 oracle@rac1 (J001) TANG 3 rac1
9 STAT_DATA 180 217 oracle@rac1 (J001) TANG 3 rac1
10 BILL_EXTAND_CO 213 627 plsqldev.exe SYS 15 SHUJU\TECH-2013 00000006F0F64F08
11 BILL_EXTAND_CO 213 627 plsqldev.exe SYS 15 SHUJU\TECH-2013 00000006F0F64F08
12 BILL_EXTAND_CO 213 627 plsqldev.exe SYS 15 SHUJU\TECH-2013 00000006F0F64F08
13 BILL_EXTAND_CO 213 627 plsqldev.exe SYS 15 SHUJU\TECH-2013 00000006F0F64F08
可以看到要处理的表是哪个用户,SESSION_ID SERIAL# 值是多少。
2. ALTER SYSTEM KILL SESSION 'SESSION_ID, SERIAL#
----------------------------------------------
SQL> ALTER SYSTEM KILL SESSION '164,197' IMMEDIATE;
ALTER SYSTEM KILL SESSION '164,197' IMMEDIATE
ORA-00031: 标记要终止的会话
SQL>
3.查询出刚才标记要终止的会话。
select a.spid,b.sid,b.serial#,b.username from v$process a,v$session b where a.addr=b.paddr and b.status='KILLED'
4。如果不能杀掉进程,那到在系统下面(LINUX)
(22395 为上面查询的SPID)
kill -9 22395