1. 程式人生 > >Oracle 12C 新特性之擴展數據類型(extended data type)

Oracle 12C 新特性之擴展數據類型(extended data type)

stand 特性 standard ava dbm har sco stat rac

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
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。

Oracle 12C 新特性之擴展數據類型(extended data type)