连接oracle发生卡死现象

tfrtfr 2010-06-29 10:08:02

我的程序在连接数据库时不定期的发生卡死现象,今天正好一运行就卡死,我就试了一下用plsql连接,同样卡死。
然后我ping了一下数据库服务器是通的。
我又上其他机器用plsql连接,连接上了(不知道是数据库服务器正好好还是什么情况),我查看了数据库的session,上面有前面机器上的两个session(程序的和plsql的),说明是在网络通的情况下连上了,但是前面机器上的plsql和程序仍然卡死在那里,我想问一下oralce里什么情况下会发生这种情况,通的但是卡死在那里不返回,应该不是锁数据的原因(因为plsql登录的时候就发生了,我的程序也卡死在连接或者select语句上)
后来我把前面机器上的plsql进程杀掉后,重新连又好了,我们的程序不定期碰到这种情况,只有杀掉进程后重新启动才能正常。但是那个程序是个后台服务,总不能一直盯着看啊。

我是写代码的,对oralce数据库配置、分析一点不懂,请oracle高手看看什么情况下会发生这种情况,怎么配置才能避免卡死,至少让我程序捕获个错误啊。

...全文
2040 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
jianzhanger 2011-06-20
  • 打赏
  • 举报
回复
我用ado多线程 连接oracle,同样出现楼主的问题。连接数据库卡死,不返回异常,也不继续。设置了timeout,也没有用。oracle版本10g
fupei 2010-08-24
  • 打赏
  • 举报
回复
我这里的现象是程序不执行了(但因为是多线程,所以ui线程仍然响应),未弹出异常
[Quote=引用 17 楼 level_level 的回复:]
断网个人认为有两种情况:
1、物理断网
2、远程服务端所在机房的防火墙固定时间断开连接。

客户端反应,卡死一段时间,提示未登录。
[/Quote]
level_level 2010-08-21
  • 打赏
  • 举报
回复
断网个人认为有两种情况:
1、物理断网
2、远程服务端所在机房的防火墙固定时间断开连接。

客户端反应,卡死一段时间,提示未登录。
fupei 2010-08-20
  • 打赏
  • 举报
回复
我做了测试,程序会弹出异常对话框
[Quote=引用 15 楼 fupei 的回复:]
如果客户端在执行一个操作中间突然断网了,客户端会有什么反映吗,程序会有异常吗
[/Quote]
fupei 2010-08-16
  • 打赏
  • 举报
回复
如果客户端在执行一个操作中间突然断网了,客户端会有什么反映吗,程序会有异常吗
fupei 2010-08-16
  • 打赏
  • 举报
回复
我也遇到了同样的问题,一个不断访问数据库的程序隔三差五的就停工了,什么也不执行,也不报错。
之前在c#版问过这个问题,以为是内存泄露,解决了内存问题,但程序仍然隔几天就停工。
程序死掉以后,在数据库中执行了查看锁的语句,发现没有我的程序锁对象或者等待锁。
还有什么原因让程序死在哪里不执行呢


在c#版发的贴
http://topic.csdn.net/u/20100806/09/b2721b7b-d404-4182-b61a-01d7b9ae0309.html?seed=265103412&r=67716762#r_67716762
qinfei008 2010-07-07
  • 打赏
  • 举报
回复
我的也有这种情况,不过都是因为很长时间没操作,然后连接会自动中断,重新执行语句就会卡死,等个10来分钟就好了
我现在如果长时间没操作,再执行的时候,先登录,然后才执行操作,就不会有问题
tfrtfr 2010-07-07
  • 打赏
  • 举报
回复
关键程序都在用了,改得话改动比较大。。。
iihero_ 2010-07-07
  • 打赏
  • 举报
回复
推荐使用Oracle提供的ODP.Net,效率高且稳定性强.
tfrtfr 2010-07-07
  • 打赏
  • 举报
回复
最后再顶一次,不行就结贴了。
我现在用的微软提供的数据访问层.System.Data.OracleClient;是不是Oracle提供的ODP.Net考虑了这个问题呢?
tfrtfr 2010-07-05
  • 打赏
  • 举报
回复
经过不停的google,baidu,现在问题大概在这里:
oci.ll的OCIStmtExecute,就是这个方法会卡死。我装的oci.dll的版本是10.2.0.1。
现在关键是为什么会卡死,Oracle为什么设计成这个方法是卡死呢?我看到最新的版本是11.2.0.1,新的oci.dll是否修复了这个问题呢?11.2.0.1的客户端能和10.2.0.1服务器端一起用吗?
naixul 2010-07-01
  • 打赏
  • 举报
回复
楼主是不是直接用IP访问数据库,而不是在本地添加服务名呀,
我碰到过这情况,在本地添加服务名后,改善了不了
micro180 2010-07-01
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 jack0603 的回复:]
根据本人日常经验,发现SESSION卡死现象有以下几种。

1.在操作表中数据库的时候,突然断网,这是会出现之前的SESSION仍执行表,会出现卡斯。

2.在对表进行批量插入数据库,如果出现死机,或者链接中断。这是会出现卡死,因为oracle默认之前的session继续执行。

3.在前一个操作者,对表进行操作的时候,当他资源没有释放,这是你的session只能等待。
[/Quote]

对表进行批量插入数据库,如果出现死机,或者链接中断。这是会出现卡死,因为oracle默认之前的session继续执行。
xdy3008 2010-07-01
  • 打赏
  • 举报
回复
.....
tfrtfr 2010-06-29
  • 打赏
  • 举报
回复
To java3344520:
大部分时间都是正常的,出问题是很偶然的,客户端和服务器版本匹配这个应该没问题。
客户端还是服务器端,这个我也不知道,现象是服务器的session里有了这个连接,客户端一直等在那里,好像算是服务器端原因吧。

To jack0603:
1、突然断网,这个非常有可能,我的数据库服务器不在本地,但是为什么我的客户端一直等在那里呢,即使是正常以后也还卡在那里?我用的C#语言,就用了conn.Open()就一直卡着。plsql也一样,即使我在别的机器上已经连上了。
2、那这个Session怎么才能释放,oracle自己不会回滚,不可能的啊。怎么设置呢?
3、还是上面的疑问,我其他机器已经能连上了,前面的连接为什么还卡着,这个session就不能被oracle自动释放,返回客户端一些错误信息?
jack0603 2010-06-29
  • 打赏
  • 举报
回复
根据本人日常经验,发现SESSION卡死现象有以下几种。

1.在操作表中数据库的时候,突然断网,这是会出现之前的SESSION仍执行表,会出现卡斯。

2.在对表进行批量插入数据库,如果出现死机,或者链接中断。这是会出现卡死,因为oracle默认之前的session继续执行。

3.在前一个操作者,对表进行操作的时候,当他资源没有释放,这是你的session只能等待。
iqlife 2010-06-29
  • 打赏
  • 举报
回复
首先确认是服务器问题还得客户端问题...
客户端和服务器版本匹配的?
xiaosheng2008 2010-06-29
  • 打赏
  • 举报
回复
查看alert日志有报错吗?
birdl 2010-06-29
  • 打赏
  • 举报
回复
是不是出现了资源等待情况

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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