程序连接Oracle出现假死的情况,求大神指导

jianzhanger 2015-04-03 11:27:53
数据库:10.2.0.4 Linux
客户端:10.2.0.2 Window
程序:C++,ado,多线程
问题:程序运行一段时间后,特别是连续数千条的数据插入错误后(由于主键冲突、缺项等原因),会出现程序某一线程操作数据假死的情况,不能捕获异常,也不报错。需要手动关闭,而在下一次运行时,又可以执行通过(排除是程序本身编码的问题)。不定时发生,可能数月,可能数天。
请教各位大师,如何破。。。
...全文
581 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
jianzhanger 2015-04-04
  • 打赏
  • 举报
回复
引用 3 楼 wildwave 的回复:
问题有点含糊... 想办法查出来程序卡住的时候正在做什么 如果是数据库端在进行insert操作,检查是不是在等待其他会话锁的释放 高并发的应用中一定要及时commit
我是逐条commit的。下一步检查一下死锁的情况
jianzhanger 2015-04-04
  • 打赏
  • 举报
回复
引用 2 楼 sjcss 的回复:
会不会是线程做完数据库操作后长时间没有释放连接? 也可以看一下数据库的alert.log
每个线程确实做一段时间才会释放连接。但是就算没有释放最多是报错,不会卡死在那吧。且如果没有释放,应该会规律的出现问题吧
jianzhanger 2015-04-04
  • 打赏
  • 举报
回复
引用 1 楼 tobeathell 的回复:
与数据库连session的状态呢, 有种可能性,数据库出现死锁。 当连接会话出现死锁,可以用脚本,把这个程序连接的session kill掉。
“死锁”之前确实没往这方面想过,因为操作都比较简单。看看有没有死锁的sql。感谢
美到心痛 2015-04-03
  • 打赏
  • 举报
回复
会不会是线程做完数据库操作后长时间没有释放连接? 也可以看一下数据库的alert.log
外土土 2015-04-03
  • 打赏
  • 举报
回复
与数据库连session的状态呢,
有种可能性,数据库出现死锁。 当连接会话出现死锁,可以用脚本,把这个程序连接的session kill掉。
小灰狼W 2015-04-03
  • 打赏
  • 举报
回复
问题有点含糊... 想办法查出来程序卡住的时候正在做什么 如果是数据库端在进行insert操作,检查是不是在等待其他会话锁的释放 高并发的应用中一定要及时commit

3,491

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧