Oracle 12c批量插入异常:879条记录未入库且无报错求助
批量插入Oracle 12c时879条记录文件无插入无报错的排查方案
问题场景
批量读取文件解析后插入Oracle 12c数据库,多数文件执行正常,但某含879条记录的文件无记录插入且未抛出任何错误;对该文件增减1条记录后,代码可正常执行,且文件本身无内容问题。
相关代码
ExecutorService executorService = Executors.newFixedThreadPool(threadCount); List<CompletableFuture<Void>> completableFutures = pnlFiles.stream().map(pnlFileForTheBook -> CompletableFuture.runAsync(() -> { String pnlFileName = ""; String cobDate = ""; String filePath = ""; try { File localPnlFile = nasDataLoader.downloadFile(pnlFileForTheBook, filePath); if(localPnlFile != null) { List<PnlFile> pnlFileLines = parse(localPnlFile, PnlFile.class); List<PnlFileDsl> pnlFileDsls = pnlFileLines.stream().map(line -> { return new PnlFileDsl(line, cobDate); }).collect(Collectors.toList()); persistenceManager.persist(pnlFileDsls); } } catch () {} }, executorService)).collect(Collectors.toList()); List<Void> result = completableFutures.stream().map(CompletableFuture::join) .collect(Collectors.toList());
排查方向
1. 异常被完全静默吞噬
代码中的空catch () {}块会吞噬所有异常,包括下载、解析、插入环节的错误。879条记录的文件很可能在执行过程中抛出了异常,但没有任何日志或提示,导致插入逻辑中断却无法察觉。
- 立即修复:在catch块中添加详细日志,比如捕获
Exception并记录堆栈信息:catch (Exception e) { // 替换为实际日志组件 System.err.printf("处理文件%s时失败: %s%n", pnlFileForTheBook, e.getMessage()); e.printStackTrace(); }
2. 批量插入的事务/提交问题
- 检查
persistenceManager.persist(pnlFileDsls)的实现:是否存在批量阈值设置?比如当记录数等于879时,事务未正确提交,或触发了隐式回滚。 - 查看JDBC批量配置:Oracle JDBC的
setBatchSize参数如果设置为879,可能出现提交异常;部分持久化框架会自动拆分批量,若拆分逻辑在879条时出现问题,也会导致插入失败。 - 事务超时:879条记录的插入耗时刚好触达事务超时时间,导致框架静默回滚事务,未抛出异常。
3. 并发执行的资源冲突
代码使用异步线程池执行插入,879条记录的文件可能遇到数据库连接池耗尽、锁竞争等问题:
- 检查连接池配置:最大连接数是否足够,是否存在连接超时、等待超时的日志。
- 查询Oracle数据库的锁状态:通过
v$lock、v$session视图查看是否存在锁等待或死锁,确认并发插入时是否有资源冲突导致插入失败。
4. 解析环节的隐形失败
- 检查
parse方法:是否存在批量解析到某条记录时出错,返回空列表的情况?比如第879条记录存在隐形格式问题,导致解析失败但未抛出异常,最终没有数据传入persist方法。 - 验证映射逻辑:
PnlFile转PnlFileDsl的过程中,是否存在字段不匹配导致的静默失败,进而触发批量插入被跳过。
5. Oracle数据库的特殊限制
- 批量插入语句长度限制:如果使用
INSERT ALL语法,879条记录生成的SQL语句可能超过Oracle允许的最大语句长度,导致执行失败但JDBC驱动未返回错误。 - 查看数据库告警日志:检查Oracle的
alert.log,查找是否有Ora-开头的错误码,确认是否存在数据库层面的插入失败。
内容的提问来源于stack exchange,提问作者sharad
相关产品推荐
相关产品推荐

