oracle会话杀掉了,但是表一直被锁
时间: 2023-11-01 15:30:49 浏览: 168
oracle锁表该如何解决
如果 Oracle 会话已经被杀掉,但是表一直被锁定,可能是因为该会话持有的锁还没有被释放。在这种情况下,您可以尝试使用以下命令来查找和释放锁:
1. 查找持有锁定的会话
```
SELECT l.sid, l.serial#, l.status, l.type, l.mode_held, l.mode_requested, l.lock_id1, l.lock_id2, s.username, s.osuser, s.machine
FROM v$lock l, v$session s
WHERE l.sid = s.sid
AND l.type = 'TM'
AND l.id1 = <table_id>
AND l.id2 = 0;
```
其中 `<table_id>` 应替换为被锁定的表的 ID。该命令将返回持有该表锁定的会话的详细信息。
2. 释放锁定
如果您确定要释放该锁定,可以使用以下命令:
```
ALTER SYSTEM KILL SESSION '<sid>,<serial#>';
```
其中 `<sid>` 和 `<serial#>` 应替换为您在第一步中找到的会话的 SID 和序列号。这将立即杀死该会话,并释放该会话持有的所有锁定。
请注意,杀死会话可能会导致数据损坏或其他问题,请在执行此操作之前先备份您的数据。
阅读全文