一张表 被锁,我么可以查出被锁表,被锁表机器,sid,serial,lockwait,sql_hash_value
查看锁表进程SQL语句1:
SELECT object_name 被锁表 , machine 所属机器, l.ORACLE_USERNAME 表所在用户,s.sid, s.serial# ,s.LOCKWAIT ,s.SQL_HASH_VALUE
FROM gv$locked_object l, dba_objects o, gv$session s
WHERE l.object_id = o.object_id
AND l.session_id = s.sid and o.Object_Name='T_BM_VOICE_ACCOUNT' ;

然后用上面的
SQL_HASH_VALUE 值来找着锁着张表的sql 语句
select * from v$sql a where a.HASH_VALUE=802686780;

来确定具体是什么语句导致锁表,再根据上面的
sid 和 serial#, 进行杀锁:这里主要先找出 lockwait 值不为空的先进行杀锁:
杀掉锁表进程:
如果有记录则表示有lock,记录下sid 和 serial#,将记录的id 替换下面的738,1429,即可解除LOCK
alter system kill session '738,1429';
杀完锁之后,再根据上面的sql 语句再手动执行下,看还会不会锁住,不会锁住,就OK了
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/31369373/viewspace-2125285/
,如需转载,请注明出处,否则将追究法律责任。