查询oracle 数据库的表是否被用户锁定

本文介绍如何查询Oracle数据库中被锁定的表及其锁定模式,并提供了解锁表的方法。此外,还讨论了避免使用表级锁定的最佳实践。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

--查询oracle 数据库的表是否被用户锁定
SELECT 
   l.session_id sid,  
   s.serial#,  
   l.locked_mode 锁模式,  
   l.oracle_username 登录用户,  
   l.os_user_name 登录机器用户名,  
   s.machine 机器名,  
   s.terminal 终端用户名,  
   o.object_name 被锁对象名,  
   s.logon_time 登录数据库时间  
   FROM 
v$locked_object l, 
all_objects o, 
v$session s  
    WHERE 
l.object_id = o.object_id  
    AND l.session_id = s.sid  
    ORDER BY sid, s.serial#;
--解锁语句,解除session 连接, 引号中的参数是'sid,serial'
ALTER system kill session '60,4111'; 
 
--需要注意:解锁需要有相关权限的用户才可以的,这个两个sql都是要在具有dba权限的用户下执行的。
--如果我们在用PLSQL 来修改表的时候尽量不要用select ...for update.来修改表,for update是表级锁,很容易锁表,用rowid---要好一点,rowid是行级锁,只锁定你当前操作的那一行。要么用单独的update 语句 加上where条件,单独修改目标数据
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值