Oracle查看锁表进程,以及杀掉锁表进程的方法

本文提供了一种检查和解除数据库中锁定表进程的方法。通过使用特定的SQL语句来查看锁定状态,并提供了如何终止这些锁定进程的具体步骤。
查看锁表进程SQL语句:
select s.sid, 
s.serial#,
lo.oracle_username,
lo.os_user_name,
do.object_name,
lo.locked_mode
from v$locked_object lo,
dba_objects do,
v$session s
where do.object_id = lo.object_id and lo.session_id = s.sid;


杀掉锁表进程:
如有记录则表示有lock,记录下SID和serial# ,将记录的ID替换下面的1,2,即可解除LOCK
alter system kill session '1,2';
Oracle 数据库中,查询进程以及相关的 SQL 语句可以通过以下方式实现。以下是常用的 SQL 查询语句,用于识别哪些会话正在持有、哪些会话被阻塞,以及这些会话正在执行的 SQL 语句。 ### 查询当前被定的对象和会话信息 ```sql SELECT s.sid, s.serial#, s.username, s.status, s.module, s.machine, s.program, o.object_name, o.object_type, l.locked_mode, sql.sql_text FROM v$locked_object l JOIN dba_objects o ON l.object_id = o.object_id JOIN v$session s ON l.session_id = s.sid LEFT JOIN v$sql sql ON s.sql_address = sql.address AND s.sql_hash_value = sql.hash_value; ``` 此查询可以获取到当前数据库中所有被定的对象、定该对象的会话信息(如用户名、机器名、程序等),以及这些会话正在执行的 SQL 语句[^3]。 ### 查询阻塞会话的信息 如果需要进一步了解哪些会话是阻塞源(即它们持有了其他会话请求的),可以使用以下查询: ```sql SELECT s1.sid AS blocking_sid, s1.username AS blocking_user, s2.sid AS blocked_sid, s2.username AS blocked_user, w.event, w.wait_time, w.seconds_in_wait, sql.sql_text FROM v$session_wait w JOIN v$session s1 ON w.p1 = s1.sid JOIN v$session s2 ON w.sid = s2.sid LEFT JOIN v$sql sql ON s2.sql_address = sql.address AND s2.sql_hash_value = sql.hash_value WHERE w.event = 'enqueue'; ``` 该查询将列出所有因而处于等待状态的会话,显示哪个会话是阻塞源,以及被阻塞会话正在执行的 SQL 语句[^4]。 ### 查询特定对象的信息 如果你已经知道某个或对象被定,希望查找与该对象相关的所有信息,可以使用如下查询: ```sql SELECT s.sid, s.serial#, s.username, s.status, s.module, s.machine, s.program, l.locked_mode, sql.sql_text FROM v$locked_object l JOIN v$session s ON l.session_id = s.sid LEFT JOIN v$sql sql ON s.sql_address = sql.address AND s.sql_hash_value = sql.hash_value WHERE l.object_id = (SELECT object_id FROM dba_objects WHERE object_name = 'YOUR_TABLE_NAME'); ``` 请将 `YOUR_TABLE_NAME` 替换为实际的名以获取特定信息[^1]。 ### 杀掉定会话(谨慎操作) 如果发现某个会话长时间持有且影响了系统的正常运行,可以考虑终止该会话。使用以下命令: ```sql ALTER SYSTEM KILL SESSION 'sid,serial#'; ``` 请将 `sid` 和 `serial#` 替换为实际的会话 ID 和序列号。此操作应谨慎执行,确保不会对正在进行的重要事务造成影响[^2]。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值