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

--查询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条件,单独修改目标数据

你可能感兴趣的:(plsql,oracle)