[DM] 错误号-2665 记录超长

幻想 2024年03月21日 66 0

原因

DM的记录长度不能超过页大小的一半。

|  数据库页大小  | 实际最大长度 | 除大字段外总长度 |
| ------------ | ----------- | --------------- |
|   4K         |  1900       |   2000          |
|   8K         |  3900       |   4000          |
|  16K         |  8000       |   8000          |
|  32K         |  8188       |  16000          |

解决

  1. 如果指定了 USING LONG ROW 存储选项,则插入 VARCHAR 数据类型的长度不受数据库页面大小限制,但此方案不允许此字段有索引,不然插入或更新时索引依然可能会报错‘记录超长’或者在创建索引的时候都可能会报错‘记录超长’。
-- 启用超长记录
alter table test ENABLE using long row;
  1. 找到表中超长varchar类型(如:varchar2(8000)),改成text类型。
  2. 把页大小改为16K或32K。由于是底层参数,已初始化的数据库无法修改,需要重新初始化一个数据库,这对于项目中有较多超长varchar2的情况并不适用。
  3. 使用clob这样的大字段类型,长度能够达到2GB。但是要注意,大字段的使用和普通字段是有区别的。详情可以参考相关文档。
    以上由于项目并未在此字段使用索引,所以最终采用了1来解决。

参考

Last Updated: 2024/03/21 13:01:53
shell脚本_统计a文件中的行在15分钟内连续出现3次的次数 如何实现接网线内网互通