当前位置: 代码迷 >> Oracle管理 >> 麻烦帮忙看下这种情况下用commit语句有有关问题吗
  详细解决方案

麻烦帮忙看下这种情况下用commit语句有有关问题吗

热度:39   发布时间:2016-04-24 04:19:45.0
麻烦帮忙看下这种情况下用commit语句有问题吗?
在程序中,

先执行如下查询语句:
select * from 表 where 条件 for update;

如果没有返回记录的话,关闭游标,然后commit操作,退出处理;

程序是多线程(有几个线程,每个线程做的一样的事情)的,单个线程每10秒就会轮询这个表,请问这里没有查出记录的情况下用commit有问题呢?

因为我看了程序记录的日志,有两次当机(这两次相隔一个星期)的时候,都是在执行这个commit操作的时候当机的;


------解决方案--------------------
这种语句是没有问题的,仅仅是对表加了锁,并不是引起数据库的宕机的。
------解决方案--------------------
LZ这种写法是进行锁表操作。为什么要这样写?
------解决方案--------------------
引用:
Quote: 引用:

楼主的多线程在共用一个数据库连接吗?
如果共用数据库连接了,互相之间是会有影响的。
如果没有共用数据库连接,那么相互之间就是没有影响的。
  另外,不确定你说的数据库当机是个什么现象。
  会不会是上面的查询语句同时查询出数据,然后循环体内部的处理造成了表的死锁呢??


程序是一个线程一个数据库连接的;我这里说的当机不是数据库的当机,是程序的当机;
但是查询语句没有查出记录的,应该不会造成死锁的吧?


应用程序的当机还应该是死锁的可能性最大吧
建议这个方向再检查检查代码吧
  相关解决方案