出现锁表的情况很多种,但是大部分情况都是更新表,然后并没有提交,导致数据库的表被锁的情况。处理方式也比较简单,如下:
查询是否有表锁: select count(1) count from v$locked_object;
如果查询出来的数量大于1,表明有表被锁,查询出具体信息:
select a.OS_USER_NAME, c.owner, c.object_name, b.sid, b.serial#, logon_timefrom v$locked_object a, v$session b, dba_objects cwhere a.session_id = b.sid and a.object_id = c.object_idorder by b.logon_time;
执行 alter system kill session '296,36701';
至此,Oracle数据库表锁处理完毕。