在使用pl/sql操作ORACLE数据库时,或者运行第三方程序操作ORACLE数据异常退出时,常常因为一些不可控的退出等原因,导致数据库表被锁而无法操作。此时如果还可以提交事务,则可以使用commit命令将事务提交,而绝大部分情况下,事务都无法手动提交,这就需要对锁进行解锁。
可以使用下列SQL语句进行操作:
1、查询被锁的表
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;
2、查询被锁的session和serial#
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;
3、杀掉SESSION进行解锁(使用第二步得到的session和serial#)
alter system kill session '9851,6854';
当然,如果因为权限问题,导致上述语句报错,可执行如下语句赋权
grant alter system to [你的数据库名];