免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 3906 | 回复: 17
打印 上一主题 下一主题

关于死锁 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-04-01 16:59 |只看该作者 |正序浏览

有个问题请教
就是在客户端正在做增删改操作,未提交时,网络突然断掉,这时,是不是会出现死锁?

论坛徽章:
0
18 [报告]
发表于 2009-07-15 17:18 |只看该作者
如果在断开的时候没有死锁,之后就不会有死锁,只会存在锁等待。

定期清理连接可能默认是没有设置。

因为之前遇到应用服务器与数据库之间有防火墙,防火墙会对长连接进行断开,但数据库没有对断开的连接进行清理,最后导致连接过多。

论坛徽章:
0
17 [报告]
发表于 2009-04-10 14:59 |只看该作者
是的,往往OS的用户的process都没有了,但oracle的session还在,v$session里可以看出是这个用户的,这个session的ppid是1

论坛徽章:
0
16 [报告]
发表于 2009-04-10 13:32 |只看该作者
原帖由 doni 于 2009-4-4 09:49 发表


可问题是,如果网络突然中断的话,连OS都可能认为这个联结是活动,那么PMON当然不会清理这个联结的session

当然这种情况只限于长联结,对于WEB应用上用PHP,ASP之类的短联结的话,不会有这种问题


还有引申的问题出来,pmon在数据库里删除session和操作系统删除process是不同的,如果反复这样操作会导致大量死进程占用了过多的系统资源,特别是c/s结构的程序

论坛徽章:
0
15 [报告]
发表于 2009-04-10 13:29 |只看该作者
原帖由 Meets_fan 于 2009-4-3 17:12 发表
1  pmon 每3s 都执行wakeup 一次。
2  至被清除
3  清除以后,不会出现死锁。
  出现死锁的几率是很小的。
  想你说的再次执行同样是事务,即使在资源释放前也不会出现死锁
  如:
  A: 得到x, 得到y  ...


兄弟说的是DCD的时候吧,可混合型的业务不是这样的,有OLAP&OLTP混杂,特别是有大的事物处理时发生,DEADLOCK的发生不管有没有sqlnet的EXPIRE参数都可能发生,特别是当一个大的事物已提交后,比如user A lock table 1,user B lock table 2,after user A try to lock table 2,and user B try to lock table 1;这种时候当user A断掉后,再次连入后,重新执行上述操作会使问题变的更麻烦

论坛徽章:
0
14 [报告]
发表于 2009-04-09 18:47 |只看该作者
不会死锁。
一段时间后事务将会回滚,这段时间是os参数决定的,可参考操作系统的tcp/ip的KEEPALIVE参数

[ 本帖最后由 xmltiger 于 2009-4-9 18:48 编辑 ]

论坛徽章:
0
13 [报告]
发表于 2009-04-04 18:26 |只看该作者
原帖由 Meets_fan 于 2009-4-4 11:17 发表


Use parameter SQLNET.EXPIRE_TIME to specify a the time interval, in minutes, to send a probe to verify that client/server connections are active. Setting a value greater than 0 ensures that c ...


我只是讲问题的可能性

论坛徽章:
0
12 [报告]
发表于 2009-04-04 11:17 |只看该作者
原帖由 doni 于 2009-4-4 09:49 发表


可问题是,如果网络突然中断的话,连OS都可能认为这个联结是活动,那么PMON当然不会清理这个联结的session

当然这种情况只限于长联结,对于WEB应用上用PHP,ASP之类的短联结的话,不会有这种问题


Use parameter SQLNET.EXPIRE_TIME to specify a the time interval, in minutes, to send a probe to verify that client/server connections are active. Setting a value greater than 0 ensures that connections are not left open indefinitely, due to an abnormal client termination. If the probe finds a terminated connection, or a connection that is no longer in use, it returns an error, causing the server process to exit. This parameter is primarily intended for the database server, which typically handles multiple connections at any one time.

一般都要设置这个参数来避免这种问题的。

论坛徽章:
0
11 [报告]
发表于 2009-04-04 09:49 |只看该作者
原帖由 Meets_fan 于 2009-4-3 13:13 发表
lz 的情况, pmon 进程会自动清理的,根本不会出现什么死锁。


可问题是,如果网络突然中断的话,连OS都可能认为这个联结是活动,那么PMON当然不会清理这个联结的session

当然这种情况只限于长联结,对于WEB应用上用PHP,ASP之类的短联结的话,不会有这种问题

[ 本帖最后由 doni 于 2009-4-4 09:52 编辑 ]

论坛徽章:
0
10 [报告]
发表于 2009-04-03 17:12 |只看该作者
1  pmon 每3s 都执行wakeup 一次。
2  至被清除
3  清除以后,不会出现死锁。
  出现死锁的几率是很小的。
  想你说的再次执行同样是事务,即使在资源释放前也不会出现死锁
  如:
  A: 得到x, 得到y  断开
  再次连入:
  B: 根本就得不到x  所以就不会产生死锁

[ 本帖最后由 Meets_fan 于 2009-4-7 12:33 编辑 ]
  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP