更新ORACLE数据时遇到锁死情况的处理
2013-09-25 16:31
204 查看
我们在操作数据库的 时候,有时候会由于操作不当引起数据库表被锁定,这么我们经常不知所措,不知怎么给这些表解锁,在pl/sql Developer工具的的菜单“tools”里面的“sessions”可以查询现在存在的会话,但是我们很难找到那个会话被锁定了,想找到所以被锁的 会话就更难了。
下面是我自己通过网上的资料结合现场环境尝试过有效的杀进程解锁的过程,比较简单,容易操作:
查看被锁的表:
SELECT p.spid,
c.object_name,
b.session_id,
a.serial#,
b.oracle_username,
b.os_user_name
FROM v$process p, v$session a, v$locked_object b, all_objects c
WHERE p.addr = a.paddr
AND a.process = b.process
AND c.object_id = b.object_id;
将查询出来的session_id,serial#,记录下来使用如下语句进行解锁
解锁:
alter system kill session'b.session_id,a.serial#';
如果解锁不成功可以尝试在操作系统层面进行进程结束(威力很大,慎用)
[Windows] ntsd -c q -pp.spid
[Linux] ps -ef|grepp.spid
在linux中杀系统进程的时候先试试直接KILL,有些时候无效的情况尝试kill -9 spid
本人遇到了好几次此类情况都是用以上方法解决了,目前还未遇到无效的。
希望对各位有帮助。
下面是我自己通过网上的资料结合现场环境尝试过有效的杀进程解锁的过程,比较简单,容易操作:
查看被锁的表:
SELECT p.spid,
c.object_name,
b.session_id,
a.serial#,
b.oracle_username,
b.os_user_name
FROM v$process p, v$session a, v$locked_object b, all_objects c
WHERE p.addr = a.paddr
AND a.process = b.process
AND c.object_id = b.object_id;
将查询出来的session_id,serial#,记录下来使用如下语句进行解锁
解锁:
alter system kill session'b.session_id,a.serial#';
如果解锁不成功可以尝试在操作系统层面进行进程结束(威力很大,慎用)
[Windows] ntsd -c q -pp.spid
[Linux] ps -ef|grepp.spid
在linux中杀系统进程的时候先试试直接KILL,有些时候无效的情况尝试kill -9 spid
本人遇到了好几次此类情况都是用以上方法解决了,目前还未遇到无效的。
希望对各位有帮助。
相关文章推荐
- 更新ORACLE数据时遇到锁死情况的处理
- Oracle 11g 学习五:子查询,数据更新操作,事务处理和数据伪列
- POJ 3145Harmony Forever(线段树更新+分情况处理数据+区间极值查询+好题)
- Oracle笔记(七) 数据更新、事务处理、数据伪列
- Oracle笔记(七) 数据更新、事务处理、数据伪列
- 对于需要根据客户操作更新数据的情况的去重复处理
- Oracle笔记(七) 数据更新、事务处理、数据伪列
- Oracle笔记七:数据更新、事务处理、数据伪列
- 遇到的问题(一):智能家居中WIFI模块设备在接收底层家具设备串口数据时由于断帧而出现的指令丢失的情况处理
- 用ADO.Net实现Oracle大批量数据更新优化处理方法
- Oracle笔记(七) 数据更新、事务处理、数据伪列
- 利用JDBC中处理批量更新oracle数据
- Oracle笔记(七) 数据更新、事务处理、数据伪列
- Oracle笔记(七) 数据更新、事务处理、数据伪列
- Oracle基础知识笔记(7) 数据更新、事务处理、数据伪列
- Vue遇到的bug-02(vue中修改了数据但视图无法更新的情况)
- Oracle编程,遇到并发的情况处理
- Oracle中用一个表的数据更新另一个表的数据
- 更新页面数据时,怎么处理库里的数据和调用方的数据
- Oracle的sql记录 以后遇到陆续更新