从12c开始,varchar2(实际包括nvarchar2和raw)开始支持32767个字节,即32K的容量。他是由max_string_size这个参数控制的,默认值是STANDARD,为了支持32K,需要将其改为EXTENDED。
[oracle@localhost ~]$ sqlplus / as sysdba SQL*Plus: Release 19.0.0.0.0 - Production on Thu May 5 01:13:46 2022 Copyright (c) 1982, 2020, Oracle. All rights reserved. SQL> show parameter max_str NAME TYPE VALUE SQL> create table test (id varchar2(5000)); Table created. SQL> insert into test values(rpad('a',4200,'a')); 1 row created. SQL> commit; Commit complete. SQL> select length(id) from test; LENGTH(ID) |
我们可以看到,在max_string_size 为 STANDARD,创建表时,可以指定varchar2 类型超过 4000字节,但是当插入数据超过4000字节时,数据会被阶段
SQL> show parameter max_string NAME TYPE VALUE 1 row created. SQL> commit; Commit complete.
LENGTH(ID) |
只有将max_string_size 改为EXTENDED (修改过程参考官方文档),才能插入超过 4000 字节的数据内容。