oracle 死锁问题
来源:互联网 发布:ubuntu创建一个文件夹 编辑:程序博客网 时间:2024/05/19 02:29
我个人对SQL锁也不是非常关注,但是毕竟也是IT内的一小角色;也不免要跟数据库打交道,我所谓说的打交道只是使用基本的操作,不像那些DB manger ;
更别提什么优化什么游标和表的索引了。对锁也是了解没有进一步关注,但是最近因为一些需要所以去查阅资料和网络及书籍也只是了解一个大致而已
想了解更多可以看看文档或是TOM的9I&10G编程艺术这本书,我也是从上面查阅了解到的。
当表或者进程被某一程序死锁之后,就无法对其进行操作,只有等待,有时等待session超时也可以进行操作,可有时session无法释放,就不能说,等一会可以解决问题的。
具体来说,解决办法有以下几点:
1、 首先使用system用户用plsql进行登陆,在tool->session,你就可以看到是那个程序锁定了那些表。
2、 或者使用以下语句进行查询也可(必须使用system用户)
以下的语句可以查询到谁锁了表,而谁在等待。
SELECT /*+ rule */ lpad(' ',decode(l.xidusn ,0,3,0))||l.oracle_username User_name,
o.owner,o.object_name,o.object_type,s.sid,s.serial#
FROM v$locked_object l,dba_objects o,v$session s
WHERE l.object_id=o.object_id
AND l.session_id=s.sid
ORDER BY o.object_id,xidusn DESC
在查询结果里面,我们可以看到sid和serial#。
我们回到第一个步骤,对应sid和serial#就可以查询到那个session,点击右键选择kill即可。
3、 如果按上两个步骤还是不能解决死锁,则需要从操作系统级别上解决。
使用一下语句,查看操作系统级的进程id(即spid)
select b.logon_time,b.program,b.username,b.osuser,a.spid,b.sid,
b.serial#,b.logon_time,b.machine
from v$process a,v$session b
where a.addr=b.paddr
and b.sid=14
将b.sid=14换成在步骤2里面查询到的sid即可查询到该session的进程号,进入操作系统
使用 kill –9 spid 杀死进程,这样,死锁问题就很快解决了。
- oracle 死锁问题
- oracle 死锁问题
- oracle 死锁问题
- 解决ORACLE死锁问题
- 浅谈Oracle死锁问题
- oracle 死锁问题
- 解决Oracle死锁问题
- oracle数据库死锁问题
- ORACLE 死锁问题剖析
- ORACLE死锁问题
- ORACLE 解决死锁问题
- 如何解决oracle死锁问题
- Oracle死锁问题分析解决
- Oracle死锁、数据库链接问题
- Oracle死锁问题分析解决
- Oracle死锁问题分析解决
- [Oracle] Oracle死锁问题跟踪处理
- Oracle数据库死锁问题探讨与处理
- 数据结构(二)——栈及实现、括号匹配
- 推荐一个不错的高权重链接交换平台,一秒钟即可被收录
- android ethernet移植- freescale i.mx23平台上移植android2.2-froyo
- 二维数组的动态分配及参数传递
- 限制同一时间只能一个用户登录
- oracle 死锁问题
- vb.net 获取汉字首字母的办法
- rpm dpkg 用法比较
- Hibernate 中getSession().save() 保存不到数据库 解决办法
- uboot-2009.01的start.S详细注解及分析
- 用js模拟的Map
- 【Linux菜鸟成长记(五)】Ubuntu 10.04 设置中文输入法
- 点评:XBRL技术规范 - 第3部分:变量规范 中的一句话翻译
- Hibernate Id Generator的解释 .