用Oracle Sql Developer操作表的时候,不知咋的把表锁住了。
结果那张表一插数据就死,连truncate都不行。
从网上七拼八凑了个方法,终于把进程杀了,表也就解锁了。
首先要用dba级别的用户操作,因为要察看很多系统表。用普通用户操作的话,会提示表或者View不存在。(为什么不提示权限不够?害我总以为是版本问题)
然后找锁表的sid(session id),SERIAL#,PADDR
select * from v$lock ,dba_objects,v$session where object_id=v$lock.id1 and v$lock.sid=v$session.sid
找spid
SELECT SPID FROM V$PROCESS WHERE ADDR='刚才查到的PADDR';
最后. 杀进程
(1).先杀ORACLE进程:
ALTER SYSTEM KILL SESSION '查出的SID,查出的SERIAL#';
(2).再杀操作系统进程:KILL -9 刚才查出的SPID或
ORAKILL 刚才查出的SID 刚才查出的SPID
注:貌似只要执行1就ok了
提示找不到spid。。。不管了,去看看锁住的表。能插数据了,解决。