Database SQL Language Reference
----
》》
Data Types
在Oracle Database 12c中,可以指定
VARCHAR2
、
NVARCHAR2
和
RAW
数据类型的最大大小为
32767
字节。这样,用户便可以在数据库中存储更长的字符串。在本发行版之前,
VARCHAR2和
NVARCHAR2
数据类型的最大大小为
4000
字节,
RAW
数据类型的最大大小为
2000
字节
。声明的VARCHAR2、
NVARCHAR2
或
RAW
列长度影响如何在内部存储列。
•声明列长度为
4000
字节或更少的
VARCHAR2
和
NVARCHAR2
列以及声明列长度为
2000
字节或更少的
RAW
列在行内存储。
•声明列长度大于
4000
字节的
VARCHAR2
和
NVARCHAR2
列以及声明列长度大于
2000
字节的
RAW
列称为“扩展字符数据类型列”,它们在行外存储。
MAX_STRING_SIZE控制
SQL
中扩展数据类型的最大大小:
•
STANDARD
表示在
Oracle 12c
之前使用的数据类型长度限制。
•
EXTENDED
表示
Oracle Database 12c
中的
32767
字节限制。
扩展字符数据类型具有以下限制:
•在聚簇表和按索引组织的表中不受支持。
•没有分区内并行
DDL
、
UPDATE
和
DELETE DML
。
•对于在使用自动段空间管理
(Automatic Segment Space Management,ASSM)
进行管理的表空间中存储的表,没有分区内并行直接路径插入。
对比
LOB
数据类型,在
ASSM
表空间管理中,扩展数据类型的字段以
SecureFiles LOB
加以存储,而在非
ASSM
表空间管理中,它们则是以
BasciFiles LOB
进行存储的。
注意点:
Ø
不能将值从EXTENDED更改为
STANDARD
。
The only way to revert is to restore the database from backup prior to running the conversion script, $ORACLE_HOME/rdbms/admin/utl32k.sql
Ø
在RAC环境中,要关闭所有实例。只有将数据库实例参数
MAX_STRING_SIZE
设置为
EXTENDED
后,才能创建包含扩展字符数据类型列的表。
RAC
环境中所有
RAC
节点上
MAX_STRING_SIZE
初始化参数的值也必须相同。
Ø
需要特别注意的是:
①
Oracle 12c中的扩展的数据类型只是针对
非CDB
和
PDB
而言的,而
CDB的根容器不支持扩展的数据类型
,即使在根容器中修改成功也不能在CDB的根容器中创建超过
4000
字节的列。
②
从Oracle 12.2版本开始,可以在不修改
MAX_STRING_SIZE
参数的情况下创建最大
32767
字节的列,但是,实际最大存储依然是
4000
字节。所以,要想真正支持扩展数据类型,那么必须修改
MAX_STRING_SIZE
参数,而且运行相关脚本
utl32k.sql</