dede扩展数据类型_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_size

NAME     TYPE VALUE

------------------------------------ ----------- ------------------------------

max_string_size     stringSTANDARD

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

2. 关闭数据库

SQL> shutdown immediate;

3. 以升级模式重启数据库

SQL> startup upgrade;

3. 更改参数: ALTERSYSTEM SET MAX_STRING_SIZE=EXTENDED;

SQL> alter system  set max_string_size=extended scope=spfile;

System altered.

4. 执行 utl32k.sql as sysdba:

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

说明:如果环境是cdb+pdb,那么所有的cdb + pdb$seed + pdb 都需要在 startup upgrade; 状态下跑脚本 @$ORACLE_HOME/rdbms/admin/utl32k.sql 。不然,只扩展完cdb后,pdb不能打开,报ORA-14694: database must in UPGRADE mode to begin MAX_STRING_SIZE migration 。

5. 检查一下有没有产生失效对象

SQL> select count(*) from dba_objects where status<>'VALID';

COUNT(*)

----------

0

6. 关闭数据库

SQL> shutdown immediate;

7. 以读写模式重启数据库

SQL> startup;

8.检查参数max_string_size , 与失效对象。

SQL> show parameter max_string_size

NAME     TYPE VALUE

------------------------------------ ----------- ------------------------------

max_string_size     stringEXTENDED

SQL> select count(*) from dba_objects where status<>'VALID';

COUNT(*)

----------

0

9. 测试

SQL> create table t_32k (name varchar2(32000));

Table created.

SQL> insert into t_32k values('andy');

1 row created.

SQL> select * from t_32k;

NAME

--------------------------------------------------------------------------------

andy

对比LOB数据类型,在ASSM表空间管理中,扩展数据类型的字段以SecureFiles LOB加以存储,而在非ASSM表空间管理中,它们则是以BasciFiles LOB进行存储的。

注意:一旦更改,你就不能再将设置改回STANDARD。

你可能感兴趣的:(dede扩展数据类型)