作为一个IT技术人员,可能经常遇到在使用Oracle数据时,由于操作不当导致数据库锁表,从而影响项目正常使用,那么通过如下步骤,则可轻松解决锁表问题。
工具/原料
1
PLSQL Developer
2
Xshell
方法/步骤
1
--锁表查询SQLSELECT object_name, machine, s.sid, s.serial# ,o.ownerFROM gv$locked_object l, dba_objects o, gv$session s WHERE l.object_id = o.object_id AND l.session_id = s.sid; 使用该查询语句查询被锁对象,锁表设备,以及sid和serial
2
--强制关闭进程alter system kill session '1434, 2425';此处1434 和 2425 分别为上步查询的sid和serial
3
--当出现'ORA-00030: 用户会话 ID 不存在'时--查询进程号select distinct s.sid,s.serial#,p.spid as 系统进程号from v$locked_object l , dba_objects o , v$session s , v$process pwhere l.object_id=o.object_id and l.session_id=s.sid and s.paddr=p.addr;
4
使用Xshell工具登录数据库服务器,执行如下命令:kill -9 系统进程号系统进程号为上步查询的spid 至此,锁表问题可完美解决!
注意事项
kill系统进程需谨慎
上一篇:定位被锁表的进程
下一篇:SQLserver 数据库小知识