ora-01002在获取3000万条记录时获取顺序错误的oracle

dxxyhpgq  于 2021-08-25  发布在  Java
关注(0)|答案(0)|浏览(371)

我正在尝试通过inputstream获取3000万条记录。java sql结果中建议的read()到inputstream。我将处理这些记录并与gft一起转移。尝试此过程时,我的结果集出现java.sql.sqlexception:ora-01002:fetch out-out-sequence错误。但是,并不是每次都这样。我看到有3.2亿张唱片几乎没有成功。有时,我也会在1500万条记录中出现这个错误。读取某些记录后引发的顺序错误(不是在开始时)
以下是我如何创建连接和结果集

connection = dataSource.getConnection();
sql = "select query" // I am selecting 30 columns from table
stmt = connection.prepareStatement(sql); //using PreparedStatement
stmt.fetchSize() // It was set to 300.
rs = stmt.executeQuery(); //resultset
//Not overriding anymore default properties

以下是我的配置中的属性

spring.datasource.type: com.zaxxer.hikari.HikariDataSource
spring.datasource.driver-class-name: oracle.jdbc.OracleDriver

我的oracle版本:oracle数据库12c企业版发行版
是否需要重写默认连接/stmt/resultset属性?我不确定,这是否与连接有关。我无法模拟/找出发生这种情况时的模式。
使用的查询是 SELECT COLUMN_1, COLUMN_2, COLUMN_3....COLUMN_30 FROM TABLE_NAME where TIMESTAMP < ? and TIMESTAMP >= ? 创建preparedstatement后提供的时间戳 stmt.setTimestamp(1, timestamp); stmt.setTimestamp(2, timestamp); 我曾经调试过这个。我观察到的一个错误是resultset.next()抛出这个提取顺序错误。在结果集中展开委托对象时,观察到的字段是

isAllFetched = false
isDoneFetchingRows = false
currentRow = 7035999
fetchedrowCount = 7036000

这是resultset.next()将提取抛出序列的点

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题