在操作Oracle数据库时有时出现疏忽,使数据库某表被锁住了,导致其它操作无法进行,那怎么查看 Oracle 数据库中产生的锁呢?
一,Oracle查看锁
-- oracle 查看产生的锁列表
select s.sid, s.serial#
from v$locked_object lo, dba_object ao, v$session s
where ao.object_id = lo.object_id and lo.session_id = s.sid;
在PL/SQL 中执行该SQL语句,如果存在锁,则以表的形式展示,如果存在一些锁,想删除其中某个锁,则按如下解锁,
二,解锁/删除锁
-- Oracle 解锁/删除锁
alter system kill session 'SID字段值,serial#字段值';
根据前面查询到的 SID 和 serial# 字段的值放到语句中,在PL/SQL 中执行该SQL语句即可删除对应的锁,通过上面的查询可验证对应的锁是否已经解锁;
欢迎拍砖讨论...