max_string_size

从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
Version 19.11.0.0.0

Copyright (c) 1982, 2020, Oracle.  All rights reserved.

SQL> show parameter max_str

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
max_string_size                      string      STANDARD

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)
----------
      4000

我们可以看到,在max_string_size 为 STANDARD,创建表时,可以指定varchar2 类型超过 4000字节,但是当插入数据超过4000字节时,数据会被阶段

SQL> show parameter max_string

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
max_string_size                      string      EXTENDED
SQL> insert into test values(rpad('a',4200,'a'));

1 row created.

SQL> commit;

Commit complete.


SQL> select length(id) from test;

LENGTH(ID)
----------
      4000
      4200

只有将max_string_size  改为EXTENDED (修改过程参考官方文档),才能插入超过 4000 字节的数据内容。


版权声明:本文为huangliang0703原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。