背景
刚刚接触oracle的PL/SQL开发,单位的虚拟桌面总是存在一些令人崩溃的问题… …
比如pl/sql develop打开后放置一段时间就莫名其妙的与oracle断联了… …
而且这个情况在sp的单元测试中经常发生,然后就出现了一些表被锁住,导致再次测试时test被阻塞 … …
解决的方式就是kill 掉pl/sql develop,然后再次启动pl/sql develop,查看哪些表被锁了,杀掉导致锁表的session。
查看锁表
SELECT DISTINCT t.sid, t.serial#
FROM v$session t
INNER JOIN v$locked_object lo ON lo.session_id = t.sid;
得到导致锁表的session信息:
- sid:session的id
- serial#:序列号
通过sid和serial可以确定唯一的session
杀session
ALTER SYSTEM KILL SESSION 'sid,serial#' IMMEDIATE;
注意:以上操作均为SQL语句,在pl/sql develop的SQL窗口内执行;或者在SQLPLUS的命令行窗口执行