简单查询在杀死/非活动会话上执行需要几分钟

时间:2012-02-22 19:02:26

标签: c++ performance oracle oci

我正在尝试向我的应用程序添加简单的故障转移功能,该应用程序与Oracle 8 11数据库进行通信。为了测试我的会话是否已启动,我发出一个简单的查询(从双重中选择1)。

现在,当我尝试通过执行“alter system kill session'sid,serial';”来杀死我的Oracle会话来模拟网络中断时并执行此测试查询,应用程序最多需要5分钟来处理它并从Execute方法返回错误(我正在使用OCI API,C ++):

  

2月21日星期二21:22:47 HKT 2012:检查测试查询的连接...

     

2月21日星期二21:28:13 HKT 2012:警告 - OCI_SUCCESS_WITH_INFO:3113:ORA-03113:通讯频道上的文件结尾

     

2月21日星期二21:28:13 HKT 2012:测试连接失败,试图重新建立连接......

如果我在查询结尾处使用'immediate'关键字终止会话,则测试查询会立即返回错误。

问题1:为什么执行查询需要5分钟?是否有任何Oracle / PMON日志可以解释在此延迟期间发生的事情?

问题2:使用'alter system kill session'来模拟网络故障是一个不错的选择吗?这个查询的结果与应用程序和Oracle DB之间的真实网络故障有多接近?

更新

Oracle版本:

Oracle Database 11g企业版11.2.0.2.0版 - 64位生产

使用分区,OLAP,数据挖掘和实际应用程序测试选项

1 个答案:

答案 0 :(得分:0)

程序很有可能等待回滚完成。