Oracle锁表处理
1.查看被锁的表
- select b.owner,b.object_name,a.session_id,a.locked_mode
- from v$locked_object a,dba_objects b
- where b.object_id = a.object_id
复制代码 2.查看锁表的进程
- select a.OS_USER_NAME, c.owner, c.object_name, b.sid, b.serial#, logon_time
- from v$locked_object a, v$session b, dba_objects c
- where a.session_id = b.sid
- and a.object_id = c.object_id
- order by b.logon_time;
复制代码 3.杀死进程
- -- immediate 添加为立即结束
- alter system kill session 'sid,serial' immediate
复制代码 注:执行步骤3,可能存在权限不足的问题
解决方式:- GRANT ALTER SYSTEM TO <username>;
复制代码 步骤3执行完,锁表已正常解决
4.查找对应进程号
步骤3可能存在‘ORA-00027: 无法终止当前会话’ 错误。
此时,需要通过杀死对应的进程号来解决- select a.SID,a.USERNAME,a.status,a.process,b.SPID from v$session a,v$process b where a.PADDR=b.ADDR;
复制代码 5.杀死进程
1.任务管理器直接终止相应的PID
2.命令行sid 是数据库实例名
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
来源:https://www.jb51.net/database/330969q24.htm
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |
|