Pro*C连接中断测试(Oracle 9i)

    为了测试应用程序的健壮性,故意对正常连接的Pro*C应该程序进行了中断,从而观察它们的表现。
 
测试的方法为:
1、在编译Pro*C应用的时候加上cpool=no或cpool=yes,测试有连接池和没连接池的不同表现;
2、启动应用程序后等待输入,将流程挂起;
3、在数据库中查询此测试程序的SESSION:
SELECT * FROM v$session WHERE program='TestConnPool.exe';
4、生成杀掉Session的代码:

SELECT 'alter system kill session ''' || sid || ',' || serial# || ''';'
FROM v$session
WHERE program='TestConnPool.exe';

5、执行SQL杀掉SESSION:
alter system kill session '23,1308';
…..
6、按任意键让应用程序继续执行,查看错误信息。
7、发生错误的时候尝试重新连接。
 
   以下是各种情况下的测试结果:
测试情况
调用时的错误码
能否重连

不使用连接池,使用kill session人为断开连接

ORA-00028 your session has been killed

使用连接池,使用kill session人为断开所有连接

ORA-03114: 未连接到 ORALCE
不能。连接池被破坏,只有重启进程。重新连接的时候显示这个错误: ORA-00022 invalid session ID; access denied

使用连接池,使用kill session人为断开连接池连接

不报错。很奇怪的现象,照理说物理连接都被断开了,结果仍然能够正常执行。
 

使用连接池,使用kill session人为断开非连接池连接

ORA-03114: 未连接到 ORALCE
能。
不使用连接池,拔掉网线后恢复网络连接
ORA-12571:TNS:packet writer failure
能。这个错误是客户端错误,重新连接后创建了新的SESSION,旧的SESSION仍在ORACLE的SESSION列表中。(猜想如果应用程序频繁崩溃和重启,可能导致ORACLE的连接耗尽)
使用连接池,拔掉网线后恢复网络连接
ORA-12571:TNS:packet writer failure
能。ORACLE重新创建了连接池的物理连接,但是没有创建新的逻辑连接。
 
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值