执行sql时经常会出现user request ...错误,查看sql也没有写错,这是我们需要查看下update进程是否被锁。
关于锁表的一些查询
1--锁表查询:
select count(*) from v$locked_object;
select * from v$locked_object;
2--查看哪个表被锁
select b.owner,b.object_name,a.session_id,a.locked_mode from v$locked_object a,dba_objects b where b.object_id = a.object_id;
3--查看是哪个session引起的(一般会存在多个相同类型的session,会一直挂着,然后再操作也执行不了,这是需要先杀掉进程,再执行,看看是哪个 地方的原因。)
select b.username,b.sid,b.serial#,logon_time from v$locked_object a,v$session b where a.session_id = b.sid order by b.logon_time;
4--杀掉对应进程
执行命令:alter system kill session '121,3311';
121对应sid,3311对应serial#.