Oracle 12C 新特性之擴充套件資料型別(extended data type)

張衝andy發表於2017-05-12
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。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31383567/viewspace-2138965/,如需轉載,請註明出處,否則將追究法律責任。

相關文章