oracle中kill session的方法
在oracle中查找有多少表被锁住的方法:
select b.owner table_owner,b.object_name,c.username,c.sid,c.serial#
from v$locked_object a,dba_objects b,v$session c
where a.object_id=b.object_id and c.sid=a.session_id;
这样根据sid和serial#就可以直接杀掉(具体方法下面介绍)
查找一个表是否被锁的方法,例如:临时表SHZGY.SHZGY_PZ_BB_ERROR1
select object_id, owner||'.'||object_name object_name
from dba_objects
where owner='SHZGY'
and object_name like 'SHZGY_PZ_BB_ERROR1';
OBJECT_ID OBJECT_NAME
---------- ----------------------------------
105421 SHZGY.SHZGY_PZ_BB_ERROR1
找出该表的id1。
select * from v$lock where id1 = 105421;
ADDR KADDR SID TY ID1 ID2 LMODE REQUEST CTIME BLOCK
-------- -------- ---------- -- ---------- ---------- ---------- ---------- ---------- ----------
A08E1304 A08E1314 29 TO 105421 1 3 0 1209396 0
A08D4904 A08D4914 30 TO 105421 1 3 0 1295439 0
A08E1188 A08E1198 32 TO 105421 1 3 0 1284027 0
A08E12B8 A08E12C8 77 TO 105421 1 3 0 1209674 0
A08E11D4 A08E11E4 120 TO 105421 1 3 0 1280668 0
A08E1350 A08E1360 144 TO 105421 1 3 0 1209330 0
A08E1220 A08E1230 151 TO 105421 1 3 0 1279593 0
已选择7行。
说明有七个会话锁住该临时表。
如果可以kill,就可以 drop table shzgy.shzgy_pz_bb_error1;
select a.sid, a.SERIAL#, b.spid, a.status, a.PROGRAM
from v$session a, V$PROCESS b
where a.sid in (29, 30, 32, 77, 120, 144, 151)
and a.paddr=b.ADDR
order by a.sid;
&nbs
相关新闻>>
- 发表评论
-
- 最新评论 更多>>