oracle数据库出现锁表的处理方法

mac2026-05-07  12

/********************************************** 1 *****************************************************/ select sess.sid,sess.serial#, lo.oracle_username,lo.os_user_name,ao.object_name,lo.locked_mode,SESS.machine,sess.status from v l o c k e d o b j e c t l o , d b a o b j e c t s a o , v locked_object lo,dba_objects ao,v lockedobjectlo,dbaobjectsao,vsession sess where ao.object_id = lo.object_id and lo.session_id = sess.sid;

通过查询被占用资源的sid,和serial#的值,通过如下语句杀死会话: alter system kill session ‘184,53’;

通常如果在锁表的情况下,我们是不能将存储过程进行编译的,所以存储过程无法编译的时候我们可以采取如下的方法: select distinct sid||’,’||serial# sidal,s1.SADDR from V D B O B J E C T C A C H E o c , v DB_OBJECT_CACHE oc, v DBOBJECTCACHEoc,vobject_dependency od, dba_kgllock w, v$session s1 where oc.name=upper(‘clsj_xxbd_RoomInfo’) and od.TO_OWNER=oc.OWNER and od.TO_NAME=oc.NAME and od.TO_ADDRESS=w.kgllkhdl and w.kgllkuse=s1.SADDR; 如果我们把查出来的sid和serial#执行之前杀死会话的sql就行了。

最新回复(0)