我正在尝试向我的应用程序添加简单的故障转移功能,该应用程序与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,数据挖掘和实际应用程序测试选项
答案 0 :(得分:0)
程序很有可能等待回滚完成。