Oracle11新特性——分割槽功能增強(五)
打算寫一系列的文章介紹11g的新特性和變化。
Oracle11g在分割槽方面做了很大的提高,不但新增了4種複合分割槽型別,還增加了虛擬列分割槽、系統分割槽、INTERVAL分割槽等功能。
這一篇介紹Oracle11g的系統分割槽功能。
Oracle11新特性——分割槽功能增強(一):http://yangtingkun.itpub.net/post/468/403962
Oracle11新特性——分割槽功能增強(二):http://yangtingkun.itpub.net/post/468/404223
Oracle11新特性——分割槽功能增強(三):http://yangtingkun.itpub.net/post/468/404694
Oracle11新特性——分割槽功能增強(四):http://yangtingkun.itpub.net/post/468/410604
11g以前的分割槽表,需要指定一個或多個分割槽欄位,並根據這個分割槽欄位的值,按照一定的演算法(RANGE、HASH和LIST)來決定一條記錄屬於那個分割槽。
從11g開始,Oracle允許使用者不指定分割槽列,完全根據程式來控制資料儲存在那個分割槽中。這就是11g提供的系統分割槽功能。
在以前,確定了分割槽列和分割槽方式,那麼一條資料屬於哪個分割槽也就被確定下來。而對於系統分割槽而言,分割槽是分割槽,資料是資料,二者沒有對應的關係。資料可以被放在任意一個分割槽中,這不是由資料本身決定的,而是應用程式在插入時確定的。
SQL> CREATE TABLE T_SYSTEM
2 (ID NUMBER, NAME VARCHAR2(30))
3 PARTITION BY SYSTEM
4 (PARTITION P1, PARTITION P2, PARTITION P3, PARTITION P4);
表已建立。
SQL> INSERT INTO T_SYSTEM VALUES (1, 'ABC');
INSERT INTO T_SYSTEM VALUES (1, 'ABC')
*第 1 行出現錯誤:
ORA-14701: 對於按“系統”方法進行分割槽的表, 必須對 DML 使用分割槽副檔名或繫結變數
對於系統分割槽表,插入的時候必須指定分割槽:
SQL> INSERT INTO T_SYSTEM PARTITION (P1) VALUES (1, 'ABC');
已建立 1 行。
SQL> INSERT INTO T_SYSTEM PARTITION (P2) VALUES (1, 'ABC');
已建立 1 行。
SQL> SELECT ROWID, ID, NAME FROM T_SYSTEM;
ROWID ID NAME
------------------ ---------- ------------------------------
AAARcdAAFAAAB2nAAA 1 ABC
AAARceAAFAAAB2vAAA 1 ABC
SQL> SELECT ID, NAME,
2 (SELECT SUBOBJECT_NAME FROM USER_OBJECTS WHERE DATA_OBJECT_ID = DBMS_ROWID.ROWID_OBJECT(A.ROWID))
3 FROM T_SYSTEM A;
ID NAME (SELECTSUBOBJECT_NAMEFROMUSER_
---------- ------------------------------ ------------------------------
1 ABC P1
1 ABC P2
從上面可以看到,對於SYSTEM分割槽方式,完全相同的資料也可以插入到兩個不同的分割槽中。資料和分割槽沒有任何關係。
對於系統分割槽表可以使用絕大部分分割槽維護功能,除了ALTER TABLE SPLIT PARTITION功能。因為沒有分割槽列,Oracle無法將分割槽中的資料分配到兩個新的分割槽中。
同樣的道理,採用了系統分割槽的分割槽表是不能透過CREATE TABLE AS SELECT方式建立的。
而且,由於沒有分割槽列,因此無法建立唯一的LOCAL索引。
系統分割槽方式繼承了分割槽帶來的可用性和易維護性的好處,但是分割槽消除對於系統分割槽是無效的。由於不清楚資料存放在那個分割槽,因此對於系統分割槽中資料的查詢需要在所有分割槽中進行。
系統分割槽要求INSERT語句必須包括分割槽描述語句,SELECT、UPDATE和DELETE語句則不需要。如果考慮到分割槽消除對系統分割槽無效,那麼如果瞭解資料儲存在哪個分割槽中,最好在DML的時候指定分割槽,這樣可以提供查詢的效能,避免全表掃描的產生。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4227/viewspace-69489/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle11新特性——分割槽功能增強Oracle
- Oracle11新特性——分割槽功能增強(四)Oracle
- Oracle11新特性——分割槽功能增強(三)Oracle
- Oracle11新特性——分割槽功能增強(二)Oracle
- Oracle11新特性——分割槽功能增強(一)Oracle
- Oracle11新特性——備份恢復功能增強(五)Oracle
- Oracle11新特性——線上操作功能增強(五)Oracle
- Oracle11新特性——備份恢復功能增強Oracle
- Oracle11新特性——備份恢復功能增強(六)Oracle
- Oracle11新特性——備份恢復功能增強(四)Oracle
- Oracle11新特性——備份恢復功能增強(三)Oracle
- Oracle11新特性——備份恢復功能增強(二)Oracle
- Oracle11新特性——備份恢復功能增強(一)Oracle
- Oracle11新特性——備份恢復功能增強(十)Oracle
- Oracle11新特性——備份恢復功能增強(九)Oracle
- Oracle11新特性——備份恢復功能增強(八)Oracle
- Oracle11新特性——備份恢復功能增強(七)Oracle
- Oracle11新特性——備份恢復功能增強(十一)Oracle
- Oracle11新特性——線上操作功能增強(七)Oracle
- Oracle11新特性——線上操作功能增強(六)Oracle
- Oracle11新特性——線上操作功能增強(四)Oracle
- Oracle11新特性——線上操作功能增強(三)Oracle
- Oracle11新特性——線上操作功能增強(二)Oracle
- Oracle11新特性——線上操作功能增強(一)Oracle
- Oracle11新特性——PLSQL新特性(五)OracleSQL
- Oracle12c功能增強 新特性之管理功能的增強Oracle
- 【ORACLE新特性】11G 分割槽新特性Oracle
- Oracle11新特性——PLSQL新特性(七)OracleSQL
- Oracle11新特性——PLSQL新特性(六)OracleSQL
- Oracle11新特性——PLSQL新特性(四)OracleSQL
- Oracle11新特性——PLSQL新特性(三)OracleSQL
- Oracle11新特性——PLSQL新特性(二)OracleSQL
- Oracle11新特性——PLSQL新特性(一)OracleSQL
- Oracle 12c新特性 - Active Data Guard功能增強Oracle
- Oracle11g新特性——LOB型別功能增強Oracle型別
- Oracle11新特性——SQL快取結果集(五)OracleSQL快取
- [引用分割槽表]Oracle 11g新特性之引用分割槽表Oracle
- Oracle12c中效能最佳化&功能增強新特性之全域性索引DROP和TRUNCATE 分割槽的非同步維護Oracle索引非同步