在Oracle Database 12c之前,关于字符类数据类型的长度的上限如下:
varchar2,最大为4000B。
RAW,最大为2000B。

从12c开始,它们的最大长度已经扩展到了:32767B。

默认情况下,最大字符长度的扩展是关闭的:

这时候,如果你打算创建超过了12c之前的上限的数据长度,则会报错。
如下所示:

要实现可扩展字符类型,需要将参数“max_string_size”置为:EXTENDED。
该设置需要在数据库处于UPGRADE模式下完成。
具体操作如下所示:

然后,使用SYS用户执行脚本:?/rdbms/admin/utl32k.sql

然后,关闭数据库,并以正常方式重新启动:

再次尝试之前的建表:

可以看到,可扩展的字符类型生效了。

事实上,可扩展的字符类型,就像数据库内部实现的大对象。
你可以通过dba_lobs获得这方面的信息:

遵照标准的大对象存储规则:
Oracle会在表中,先设置4000B的内嵌存储空间,而稍后,任何多余4000B的数据都会被存储到大对象段中。
即上面LOG中的:
SYS_LOB0000092661C00001$$
SYS_LOB0000092658C00001$$
————————————————————
Ending。

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

隐藏
变装