`
lwj0212
  • 浏览: 49552 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

非lob字段引起的streams type cannot be used in batching错误原因

    博客分类:
  • jdbc
阅读更多
    系统运行时总报"streams type cannot be used in batching"错误,从字面错误来看sql肯定是本batching和streams有关,即批量操作和设计大字段(blob,clob),以下以lob代替。
    问题原因直接判断lob字段问题,结果实际表根本没有lob类型的字段
    翻查insert into语句来看,确实用了batch操作,而sql中并未按照lob的操作方式来处理,即要先插入一个empty_clob()值,再使用select col from table for upate方式, 例
    update FX_FA_JCB set JC_BG = ? WHERE FA_DM = ?
    SELECT JC_BG FROM FX_FA_JCB WHERE FA_DM=? FOR UPDATE
到此感觉就是insert语句错误,但是问题挺奇怪,本次sql错误大部分都能执行成功,个别几个不行,就仔细看了看要插入的表,表里根本没有lob类型的字段,那不可能报streams字样的错误提示呀,问题很怪异。网上搜了一把,都是关于lob字段的描述。决定调试一下看看。
 
   怪异问题的前因找到了:插入值中有乱码
    调试时,查看了sql的参数值,都是字符串类型,且都不长,不应该报这个错误呀。重新调试了一下,逐个查看参数值,发现有个参数值是这样的"<?xml version="1.0" encoding="UTF-8"?><zbkzxx><zbyxx><zby dcxxsbm="wcjyd" mc="外出经营地" value="��������������"/><zby dcxxsbm="yswdjd" mc="税务登记地" value=""/><zby dcxxsbm="yxqq" mc="外出经营活动税收管理证明有效期起" value="20130311"/><zby dcxxsbm="yxqz" mc="外出经营活动税收管理证明有效期止" value="20130811"/><zby dcxxsbm="wszg" mc="文书字轨" value="������"/></zbyxx></zbkzxx>",值中有乱码,理论上乱码也不应该有问题呀,抱着尝试的心理,就在调试阶段直接把内存中的乱码值改为了正常的字符,f8直接下去,sql执行成功了,问题发现了,查询数据库,表中中文列都是乱码,把表数据重新了一下后,再运行,一切正常,看来就是数据问题造成的。但还是觉得怪异,普通的varchar2类型怎么抛出这样的错误信息。
  
 怪异问题的原因找到了:classes12.jar驱动包问题
   使用plsql,分别把客户端设置为gbk,utf-8字符集,使用乱码的字符串做insert,都没有问题,那这肯定跟数据库无关。焦点又盯上了驱动包,查找应用使用的驱动包,发现用的是classes12.jar,把jar换成ojdbc14.jar,使用乱码数据尝试了一下insert,果然没有问题,问题就在classes12.jar身上。
 
   应用在选择jdbc驱动包时一定要慎重,查了一下,classes12.jar是在低级JDK版本1.2与1.3中使用的驱动,虽然实际上在1.4,1.5中使用大部分情况也是OK的。建议驱动包还是根据jdk来选择对应的驱动包。
  
分享到:
评论

相关推荐

    Oracle LOB字段处理工具

    总的来说,"Oracle LOB字段处理工具"是数据库管理人员和开发者进行大数据操作的利器,它能有效提高工作效率,减少错误,并提供更安全、便捷的LOB字段管理方式。对于处理大量非结构化数据的Oracle数据库环境,这类...

    Oracle数据库中LOB的调优.pdf

    而后者是不管LOB字段的长度如何,都不存储在表的段内,而是仅在表的行内存储20个字节的LOB定位符以及其他非LOB类型的数据,其数据存储在类型为LOBSEGMENT的段内。 在LOB数据类型的存储和优化中,需要考虑到表空间的...

    Spring+Hibernate处理Oracle lob字段(一)

    在本文中,我们将深入探讨如何在Java环境下,利用Spring和Hibernate框架处理Oracle数据库中的LOB(Large Object)字段。LOB字段通常用于存储大体积的数据,如文本、图片或视频。在实际开发中,处理这类数据时可能会...

    Oracle中LOB字段的存储管理和优化.pdf

    Oracle 中 LOB(Large OBjects)字段是一种特殊的数据类型,用于存储非结构化数据,如图像、音频、视频等。LOB 字段的存储管理和优化是数据库管理中一个重要的方面。本文将详细介绍 Oracle 中 LOB 字段的存储结构、...

    本文档主要介绍如何对LOB字段进行处理

    ### 如何对LOB字段进行处理 #### 摘要与背景 随着信息技术的进步及应用需求的不断扩展,数据库管理系统(DBMS)面临着存储多样化数据类型的挑战。例如,在开发旅游信息系统时,除了基本的文字信息外,还需要处理大量...

    lob字段数据删除空间测试.txt

    测试oracle数据库中,lob字段在不同...测试1 测试disable storage in row下的lob字段 测试2 测试非disable storage in row模式下 该模式为默认模式,既小于4k的数据不会存在lob中,只有大于4k的数据才会存在lob字段中

    简单易行:Spring中操作LOB字段案例

    在Spring框架中,LOB(Large Object)字段通常用于存储大数据,如BLOB(Binary Large Object)用于二进制数据,如图片或文档,CLOB(Character Large Object)用于字符数据,如长文本。本篇文章将深入探讨如何在...

    Oracle的LOB(CLOB)大字段以及(SYS_LOB$$)清理.txt

    Oracle的LOB(CLOB)大字段以及(SYS_LOB$$)清理.txt

    DB2 LOB 详解

    DB2 LOB详解涉及的知识点非常丰富,下面将从DB2中LOB字段的存储及处理过程、如何创建LOB数据对象、维护LOB数据的注意事项、使用工具进行维护等方面进行详细说明。 首先,DB2中LOB字段的存储和处理过程是一门深奥的...

    记录一次EXPDP导出BLOB字段 遇到ORA-01555报错

    oracle expdp导出blob字段遇到ora-01555报错的解决方案

    Oracle LOB 详解

    如果想使用 OCI 或 DBMS_LOB 函数,需要将 LOB 列设置为非 NULL 或 empty。 二、LOB 的存储 LOB 可以存储在表中,也可以作为对象类型的属性。 Oracle 提供了多种存储 LOB 的方式,包括: * 内置存储:LOB 存储在...

    oracle dbms_lob

    总之,`DBMS_LOB`是Oracle数据库管理LOB数据的关键工具,对于处理大量非结构化数据的开发者来说,理解和熟练使用这个包是必不可少的技能。通过深入学习和实践,可以有效地利用Oracle的LOB功能满足大数据存储和处理的...

    英语语料库LOB语料库

    exts can be found in the LOB manual (external link). This corpus is the British counterpart of the Brown Corpus of American English. which contains texts printed in the same year so that comparison ...

    关于oracle clob 类型字段重建索引SQL及修复用户表空间索引空间的存储过程

    在Oracle数据库中,CLOB(Character Large Object)类型字段用于存储大量的文本数据,如XML文档、长篇文章等。由于其特殊性,处理CLOB类型的字段时可能会遇到性能问题,特别是当涉及索引时。本话题将围绕如何针对...

    Oracle Lob Performance Guidelines

    ### Oracle LOB (Large Object) 性能指南 在数据库管理与优化领域,Oracle LOB 类型因其存储大量文本或二进制数据的能力而被广泛使用。然而,正确地使用和优化 LOB 可以显著提升数据库应用的整体性能。本文档将基于...

    Laravel开发-eloquent-serialized-lob

    "Eloquent-Serialized-Lob" 是一个专门为Laravel5设计的Eloquent扩展,它允许我们序列化LOB(Large Object)类型的字段,比如BLOB或CLOB。LOB字段通常用来存储大块的数据,如图片、文档或长文本。 首先,我们需要...

    ORACLE LOB大对象处理

    对LOB字段建立索引需要特别注意,因为它们的大小可能导致性能问题。可以选择使用位图索引或快速全扫描索引。 7. **LOB与备份恢复** 备份和恢复LOB数据需要特殊考虑,如使用RMAN(Recovery Manager)或Data Pump...

    用PHP操纵Oracle的LOB类型的数据

    $stmt = OCIParse($conn, "INSERT INTO PICTURES (id, description, picture) VALUES (pic_seq.NEXTVAL, '$description', '$lob_upload_type', EMPTY_BLOB()) RETURNING picture INTO :PICTURE"); // 创建一个本地...

    SQL Server存储LOB数据的策略与方法.pdf

    在探讨SQL Server数据库中存储LOB(Large Object)...文中还特别提醒读者,在使用OCR扫描技术生成文档时,由于技术原因可能导致文字识别存在错误或遗漏,因此理解并修正这些内容以保证文档的准确性和流畅性也是必要的。

Global site tag (gtag.js) - Google Analytics