根据上述分析,添加测试代码(强行rollback),当线程1在做长时间查询表操作的时候,线程2执行更新数据库表操作,然后rollback更新操作(测试代码),导致线程1的查询抛异常;根据问题发生现场的记录和测试结果出现的问题吻合;说明报错(ORA-01002: 读取违反顺序)是由于多个线程使用同一个数据库连接,没有对事务进行信号量保护,一个线程的rollback操作,导致另一个线程的数据库查询操作cmdEmmv.FetchNext()指空,抛异常
阅读(275) | 评论(0) | 转发(0) |