ORA-01461:仅能绑定要插入 LONG 列的 LONG 值

ORA-01461:仅能绑定要插入 LONG 列的 LONG 值
目录:
1.问题描述
2.解决思路及其他
3.问题原因
4.处理办法
5.延伸知识
6.相关参考

1.问题描述
1.1环境描述:

数据库环境 数据库:Oracle 11 g rac环境

测试人员在测新功能时,后台日志报错

1.2报错日志:

这里写图片描述
2.解决思路及其他

2.1.查看测试人员测试什么功能,前台会有什么异常。插入的表的相关内容

2.2.查找官方文档对该问题的说明 然而并没有任何说明

2.3.查找线上及MOS对该问题的原因描述及解决方案

当向ORACLE数据库中插入或更新数据时,报错“ORA-01461: 仅可以为插入 LONG 列的 LONG 值赋值”,可能有以下几种原因:

1、插入到字符串长度大于4000字节。

2、插入到表中的记录的某个字段数据的实际长度大于2000个字节(如果是UTF-8,则是1333个字节);或者是插入的记录中有两个或两个以上长度大于2000字节的字符串。

3、数据库与客户端的JDBC 驱动不匹配。对于UTF-8或欧洲的某些字符集,oracle在存储时,对于一个字符需要2个或3个字节的存储空间,虽然表定义中为 varchar2(4000),但是其实该字段的data_length为其2倍或3倍长。这种情况下oracle会把data_length长度超过 4000的当做LONG型处理,你的表中有两个这样的字段,插入数据时相当于同时操作2个LONG字段。

4、使用9i的及以下的版本引发的bug. 10.1.0.1版本中已经修复bug

3.问题原因
发现该场景出现该问题的原因是,测试时,要插入表,某字段长度超过4000。而该字段类型为varchar2,最大长度为4000。超过最大限制。属于原因1

异常是指用户向数据库执行插入数据操作时,某条数据的某个字段值过长,如果是varchar2类型(最大长度为4000字节)的,当长度超过2000–4000(最大值)之间的时候,oracle会自动将该字段值转为long型的,插入操作失败。

4.处理办法
临时解决办法:输入长度减少,使之小于4000.
推荐解决办法:修改该字段类型。

5.延伸知识

LONG: 可变长的字符串数据,最长2G,LONG具有VARCHAR2列的特性,可以存储长文本一个表中最多一个LONG列

LONG RAW : 可变长二进制数据,最长2G

CLOB : 字符大对象Clob 用来存储单字节的字符数据

NCLOB : 用来存储多字节的字符数据

BLOB : 用于存储二进制数据

BFILE : 存储在文件中的二进制数据,这个文件中的数据只能被只读访。但该文件不包含在数据库内。bfile字段实际的文件存储在文件系统中,字段中存储的是文件定位指针.bfile对oracle来说是只读的,也不参与事务性控制和数据恢复。  

其 中CLOB,NCLOB,BLOB都是内部的LOB(Large Object)类型,最长4G,没有LONG只能有一列的限制。

要保存图片、文本文件、Word文件各自最好采用哪种数据类型呢?BLOB最好,LONG RAW也不错,但Long是oracle将要废弃的类型,因此建议用BLOB。

6.相关参考

http://blog.itpub.net/751371/viewspace-716886/

http://blog.163.com/zhchf_52@yeah/blog/static/67822974201081710812218/

http://peak.iteye.com/blog/232522

http://blog.csdn.net/bisal/article/details/39545463

  • 11
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
java.sql.SQLException: ORA-01109: 数据库未打开。 ORA-01109是一个Oracle数据库错误代码,表示数据库无法在当前状态下打开。这个错误通常发生在以下几种情况下: 1. 数据库实例并未启动: 在使用Java连接Oracle数据库时,首先需要确保数据库实例已经启动。如果数据库实例没有运行,则会导致ORA-01109错误。请检查数据库实例是否已经启动,并尝试重新连接。 2. 数据库正在进行恢复操作: 如果数据库正在进行恢复操作,那么在恢复操作完成之前是无法打开数据库的。请等待数据库恢复完成后再进行连接。 3. 数据库文件损坏: 可能由于文件系统错误或其他原因,数据库文件损坏导致无法打开数据库。在这种情况下,可能需要使用Oracle数据库的恢复工具来修复数据库文件。 4. 数据库处于不可恢复的状态: 如果数据库处于不可恢复的状态,那么无法打开数据库。可能需要进行数据库的恢复操作来解决此问题。 解决该问题的方法包括: 1. 确保数据库实例已经启动。 2. 确保数据库没有进行恢复操作,并等待恢复操作完成。 3. 检查数据库文件是否损坏,并通过数据库恢复工具修复损坏的文件。 4. 如果数据库处于不可恢复的状态,可以尝试进行数据库的恢复操作。 总之,ORA-01109错误是表示数据库无法在当前状态下打开的错误。要解决这个问题,需要检查数据库实例状态,修复可能的文件损坏,并确保数据库处于可恢复的状态。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值