一个专注于大数据技术架构与应用分享的技术博客

Oralce pl/sql因程序异常退出等原因导致事务未提交造成的锁表后如何解锁

在使用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 [你的数据库名];

 

赞(0)
版权声明:本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
文章名称:《Oralce pl/sql因程序异常退出等原因导致事务未提交造成的锁表后如何解锁》
文章链接:https://macsishu.com/oralce-pl-sql%e5%9b%a0%e4%ba%8b%e5%8a%a1%e6%9c%aa%e6%8f%90%e4%ba%a4%e9%80%a0%e6%88%90%e7%9a%84%e9%94%81%e8%a1%a8%e5%90%8e%e5%a6%82%e4%bd%95%e8%a7%a3%e9%94%81
本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。