本文共 1869 字,大约阅读时间需要 6 分钟。
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 string STANDARD 说明: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 string EXTENDED 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。 来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/31383567/viewspace-2138965/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/31383567/viewspace-2138965/