背景
- 在操作Oracle时,多人同时操作oracle数据库的同一张表的时候,经常会造成锁表现象,这时需要手动进行解锁。
步骤
- 以dba身份登录Oracle数据库(否则用户缺少杀掉进程权限,需要给用户分配权限)
- sqlplus / as sysdba,如下图
- 查看被锁住的表进程
- 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;
- 查找锁表进程的SID和Serial#,因为SID和Serial#共同确定唯一的数据库进程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;
- 杀掉进程
- alter system kill session 'sid,serial#';