记一则Oracle数据库的表字段类型修改踩过的坑

在处理XML消息存储时,由于字段长度超过4000,导致Oracle数据库报错。尝试通过修改字段类型为CLOB解决,但在实际操作中遇到ORA-00054资源繁忙的问题,经过解锁会话、清理临时表和数据的操作,最终成功完成转换。总结指出在大量数据下修改字段类型需谨慎,并提供了转换方法。
摘要由CSDN通过智能技术生成

故事剧情:
公司某产品收下位系统商抛出来的SOAP消息,做完业务逻辑处理将完整的XML消息报文写入数据库存储备查。之前一直正常,最近突然发现系统频频报错,大致提示内容Oracle写入数据库错误,字段长度7000+,超过4000

问题

这个问题其实蛮常见,描述也异常的清晰,直接查看了一下数据库设置,相应的字段设置为VARCHAR,Oracle最大长度定义为4000,显然是经验欠缺,对字段长度预估不到位造成。下位系统此前一直按照标准方式一次性发一台设备的信息,现在出于减少消息并发次数考虑,将能合并的消息组合到一条SOAP里面一次性丢,原则上正确,但我方这边写数据库已报错了。

排错过程

  1. 因为这张表的目的就是为了记录消息履历备查,把XML消息分段拆开存表有点本末倒置了,放弃
  2. 只剩一条路了吧,改表的字段类型吧,最合适就是将VARCHAR改去CLOB了

踩坑过程

  1. 以下我会详细描述一下排错过程,由于是数据库小白,可能犯了很多二逼的错误,麻烦各位不吝赐教,最终解决方式和事故总结可以直接跳到文末查看。
  2. 求助度娘,很容易找到如下的解,因为已被人转帖太多次,找不到原作者了,无法致谢,再次鞠个躬。
--首先给原来varchar2类型的字段MESSAGEBODY改名为Temp
alter  table   表名  rename  column  MESS
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值