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