1

我正在尝试向与 Oracle 8 11 数据库对话的应用程序添加简单的故障转移功能。为了测试我的会话是否结束,我发出一个简单的查询(从 dual 中选择 1)。

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

Tue Feb 21 21:22:47 HKT 2012: Checking connection with test query...

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

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

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

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

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

更新:

甲骨文版本:

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

具有分区、OLAP、数据挖掘和实际应用程序测试选项

4

1 回答 1

0

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

于 2012-02-22T19:31:26.827 回答