程序连接Oracle出现装死的情况,求大神指导
程序连接Oracle出现假死的情况,求大神指导
数据库:10.2.0.4 Linux
客户端:10.2.0.2 Window
程序:C++,ado,多线程
问题:程序运行一段时间后,特别是连续数千条的数据插入错误后(由于主键冲突、缺项等原因),会出现程序某一线程操作数据假死的情况,不能捕获异常,也不报错。需要手动关闭,而在下一次运行时,又可以执行通过(排除是程序本身编码的问题)。不定时发生,可能数月,可能数天。
请教各位大师,如何破。。。
------解决思路----------------------
与数据库连session的状态呢,
有种可能性,数据库出现死锁。 当连接会话出现死锁,可以用脚本,把这个程序连接的session kill掉。
------解决思路----------------------
会不会是线程做完数据库操作后长时间没有释放连接?
也可以看一下数据库的alert.log
------解决思路----------------------
问题有点含糊...
想办法查出来程序卡住的时候正在做什么
如果是数据库端在进行insert操作,检查是不是在等待其他会话锁的释放
高并发的应用中一定要及时commit
数据库:10.2.0.4 Linux
客户端:10.2.0.2 Window
程序:C++,ado,多线程
问题:程序运行一段时间后,特别是连续数千条的数据插入错误后(由于主键冲突、缺项等原因),会出现程序某一线程操作数据假死的情况,不能捕获异常,也不报错。需要手动关闭,而在下一次运行时,又可以执行通过(排除是程序本身编码的问题)。不定时发生,可能数月,可能数天。
请教各位大师,如何破。。。
------解决思路----------------------
与数据库连session的状态呢,
有种可能性,数据库出现死锁。 当连接会话出现死锁,可以用脚本,把这个程序连接的session kill掉。
------解决思路----------------------
会不会是线程做完数据库操作后长时间没有释放连接?
也可以看一下数据库的alert.log
------解决思路----------------------
问题有点含糊...
想办法查出来程序卡住的时候正在做什么
如果是数据库端在进行insert操作,检查是不是在等待其他会话锁的释放
高并发的应用中一定要及时commit