oracle锁表和解锁方法
Oracle锁表处理
1.查看被锁的表
2.查看锁表的进程
3.杀死进程
注:执行步骤3,可能存在权限不足的问题
解决方式:
步骤3执行完,锁表已正常解决
4.查找对应进程号
步骤3可能存在‘ORA-00027: 无法终止当前会话’ 错误。
此时,需要通过杀死对应的进程号来解决
5.杀死进程
Linux系统
Windows系统
1.任务管理器直接终止相应的PID
2.命令行
sid 是数据库实例名
1 2 3 | 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 |
1 2 3 4 5 | 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; |
1 2 | -- immediate 添加为立即结束 alter system kill session 'sid,serial' immediate |
注:执行步骤3,可能存在权限不足的问题
解决方式:
1 | GRANT ALTER SYSTEM TO <username>; |
步骤3执行完,锁表已正常解决
步骤3可能存在‘ORA-00027: 无法终止当前会话’ 错误。
此时,需要通过杀死对应的进程号来解决
1 | select a.SID,a.USERNAME,a.status,a.process,b.SPID from v $session a, v $process b where a.PADDR=b.ADDR; |
Linux系统
1 | kill -9 进程号 |
Windows系统
1.任务管理器直接终止相应的PID
2.命令行
1 | orakill sid spid |
sid 是数据库实例名
内容投稿
电子邮箱:zhujiceping266@qq.com
QQ:3773078612