- 自動列表分割槽
- 多欄位列表分割槽
- 只讀分割槽
- 分割槽維護時允許過濾
- 線上轉換非分割槽表為分割槽表
- 帶分割槽的外部表
基於列的不同值劃分表的功能已經有一段時間了,但是Oracle資料庫12.2中的新增內容是,我們可以根據列中已知和未知的值來初始化表分割槽。當資料載入到表中時,如果載入的分割槽鍵值與任何現有分割槽不對應,則資料庫將自動建立新分割槽。
在Oracle Database 12c Release 2中,我們現在可以根據多個列的值列表分隔一個表,而不是像以前的版本那樣僅僅是單個列。這被稱為多欄位列表分割槽。因此,如果我們有一個包含整個國家/地區的銷售資料的非常大的表,我們可以根據州(省)以及位於同一州(省)的城市進行再分割槽。
另一個新功能是隻讀分割槽。不需要整個表是隻讀的,而只是表中的某些分割槽可以被設定成只讀的。現在我們可以針對儲存的歷史資料,設定表中的舊分割槽是隻讀的,以防止對這些“舊”資料的任何DML操作。
作為DBA,我們必須經常執行的常見分割槽維護操作之一是移動分割槽 - 也許較舊的分割槽可以轉移到低成本儲存上的表空間,因為這種資料很少被訪問。現在在Oracle資料庫12.2中,我們可以將分割槽維護操作(如MOVE PARTITION,MERGE PARTITION和SPLIT PARTITION)與資料過濾相結合。例如,當我們移動一個特定分割槽的資料時,我們也可以過濾要移動的資料。通過使用INCLUDING ROWS關鍵字指定一個過濾謂詞,我們可以確定執行分割槽維護操作時應該保留哪些資料以及可以丟棄哪些資料。
12.2中新增的最好的功能之一是,現在我們可以通過MODIFY子句的ALTER TABLE命令以及在表上執行併發DML操作,非常容易地將非分割槽錶轉換為分割槽表。因此,表的轉換是一個線上過程,不需要停機,並且通過使用UPDATE INDEXES,我們還可以將表上的任何索引轉換為本地或全域性分割槽索引。
我們現在也可以建立一個分割槽外部表。一般來說,我們可以建立一個在資料庫之外的資料表,對包含這個外部資料的表進行分割槽。如果是在處理海量的外部資料,這將是非常有益的。