Oracle 12C -- 扩展varchar2、nvarchar2、和raw数据类型的大小限制

在12C中,varchar2,nvarchar2和raw类型从之前的4K扩展到32K

升级到12C后,参数max_string_size默认值是standard,即不改变varchar2、nvarchar2、和raw数据类型的大小限制,和11g保持一致。

SQL> show parameter max_string_size
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
max_string_size                      string      STANDARD
SQL> 

开启"扩展数据类型"功能:

SQL> alter system set max_string_size=extended scope=both;
alter system set max_string_size=extended scope=both
*
ERROR at line 1:
ORA-02097: parameter cannot be modified because specified value is invalid
ORA-14694: database must in UPGRADE mode to begin MAX_STRING_SIZE migration

SQL> 

--设置该参数需要将数据以upgrade模式启动

SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup upgrade;
ORACLE instance started.

Total System Global Area 2483027968 bytes
Fixed Size                  3713864 bytes
Variable Size             721421496 bytes
Database Buffers         1744830464 bytes
Redo Buffers               13062144 bytes
Database mounted.
Database opened.
SQL> alter system  set max_string_size=extended scope=both;

System altered.
SQL> @$ORACLE_HOME/rdbms/admin/utl32k.sql

修改以后要执行以下脚本,升级后可能会有部分对象变得无效,需要重新编译下一无效对象

SQL> @$ORACLE_HOME/rdbms/admin/utlrp.sql

升级以后,如果varchar2,nvarchar2和raw的大小超过4k,oracle内部会以LOBs的方式存储(oracle内部自己维护,不建议用户直接操作)。

然后再重启数据库!

可以做个测试:

SQL> create table v32k_t (id int,name varchar2(32000));
SQL> insert into v32k_t values(1,rpad(1,31999,‘x‘));
SQL> select * from v32k_t; 

该新特性会产生以下一些影响:
(1)The creation and use of indexes is impacted (as covered in the next section in more detail).

 用户可能会无法正确的创建、使用索引,或者无法插入和更新操作。
 这主要受oracle的B树索引的长度限制,而B树索引的长度又受数据库块大小限制。8k大小的块所支持的索引的最大长度是6400字节。
 建议可以使用substr创建函数索引,或创建hash索引;使用substr创建虚拟列,然后在虚拟列上创建索引。

(2)The limit of the combined length of concatenated character strings is increased.
(3)The length of the collation key returned by the NLSSORT function is increased.
(4)The size of some of the attributes of the XMLFormat objects is increased.
(5)The size of some expressions in some XML functions is adjusted.

时间: 2024-10-05 04:01:39

Oracle 12C -- 扩展varchar2、nvarchar2、和raw数据类型的大小限制的相关文章

Oracle 12C 新特性之扩展数据类型(extended data type)

Oracle 12C 新特性-扩展数据类型,在12c中,与早期版本相比,诸如VARCHAR2, NAVARCHAR2以及 RAW这些数据类型的大小会从4K以及2K字节扩展至32K字节.只要可能,扩展字符的大小会降低对LOB数据类型的使用.为了启用扩展字符大小,你必须将MAX_STRING_SIZE的初始数据库参数设置为EXTENDED. 实验流程:1.查看参数max_string_size默认值SQL> show parameter max_string_sizeNAME     TYPE VA

Oracle 12c 新特性之varchar2长度最大值支持到32767

在oracle 12c之前版本,varchar2和nvarchar2数据类型的字段长度最大值是4000,在12c版本已扩展最大值支持到32767,也就是32kb,而参数MAX_STRING_SIZE就是控制扩展数据类型extended data type的最大长度: standard:代表12c之前的长度限制,即varchar2和nvarchar2 4是4000 bytes,raw是2000,且系统           默认是standard: extended:代表12c 32k string

oracle中varchar,varchar2,nvarchar,nvarchar2的区别

--varchar,varchar2 联系: 1.varchar/varchar2用于存储可变长度的字符串 比如varchar(20),存入字符串'abc',则数据库中该字段只占3个字节,而不是20个字节 2.size 的最大值是 4000,而最小值是 1,其值表示字节数,比如 varchar(20)表示最大可以存放20个字节的内容 区别: 1.varchar2把所有字符都占两字节处理(一般情况下),varchar只对汉字和全角等字符占两字节,数字,英文字符等都是一个字节: 2.VARCHAR2

oracle中RAW数据类型

近日在研究v$latch视图时,发现一个从未见过的数据类型.v$latch 中ADDR属性的数据类型为RAW(4|8)  同时也发现v$process中的ADDR属性的数据类型也为RAW(4|8).于是查了一下oracle 的SQL Language Reference文档,文档如下描述: The RAW and LONG RAW data types store data that is notto be explicitly converted by Oracle Database when

Oracle 12c新特性对于业务上的一些影响总结

1.不可见字段 在Oracle 11g R1中,Oracle以不可见索引和虚拟字段的形式引入了一些不错的增强特性.继承前者并发扬光大,Oracle 12c R1中引入了不可见字段思想.在之前的版本中,为了隐藏重要的数据字段以避免在通用查询中显示,我们往往会创建一个视图来隐藏所需信息或应用某些安全条件. 在12c R1中,你可以在表中创建不可见字段.当一个字段定义为不可见时,这一字段就不会出现在通用查询中,除非在SQL语句或条件中有显式的提及这一字段,或是在表定义中有DESCRIBED.要添加或是

raw数据类型

Oracle中用于保存位串的数据类型是RAW,LONG RAW(推荐使用BLOB). RAW,类似于CHAR,声明方式RAW(L),L为长度,以字节为单位,作为数据库列最大2000,作为变量最大32767字节. LONG RAW,类似于LONG,作为数据库列最大存储2G字节的数据,作为变量最大32760字节 RAW类型的好处就是:在网络中的计算机之间传输 RAW 数据时,或者使用 oracle 实用程序将 RAW 数据从一个数据库移到另一个数据库时,Oracle 服务器不执行字符集转换.存储实际

Oracle 12c Windows安装、介绍及简单使用(图文)

转载请注明出处:http://blog.csdn.net/anxpp/article/details/51345074,谢谢! 本文适合没有使用过Oracle的同学(不管是没是用过其他的数据库),最基本的操作. 1.下载 地址为:http://www.oracle.com/technetwork/cn/database/enterprise-edition/downloads/index.html 含企业版和标准版的各种平台支持的下载链接,此处选择windows下的企业版: 2.安装 2.1 解

CHAR varchar varchar2 nvarchar2

CHAR的长度是固定的,而VARCHAR2的长度是可以变化的 比如,存储字符串"abc",对于CHAR (20),表示你存储的字符将占20个字节(包括17个空字符),而同样的VARCHAR2 (20)则只占用3个字节的长度,20只是最大值,当你存储的字符小于20时,按实际长度存储. CHAR的效率比VARCHAR2的效率稍高. 目前VARCHAR是VARCHAR2的同义词.工业标准的VARCHAR类型可以存储空字符串,但是oracle不这样做,尽管它保留以后这样做的权利.Oracle自

Oracle 12c新特性(For DBA)

一: Multitenant Architecture (12.1.0.1)      多租户架构是Oracle 12c(12.1)的新增重磅特性,内建的多分租(Multi-tenancy),一个容器数据库(container database)中可以存放多个Pluggable Databases,每个Pluggable Database均独立于其他Pluggable Database. 对于外部应用程序和开发者来说,Pluggable Databases看上去就是一个普通的12.1版本之前的单