Oracle11g維護分割槽概述
本章節介紹瞭如何為表和索引進行分割槽和子分割槽的維護操作。
本章節包含以下主題:
l 在分割槽上可以執行的維護操作
l 自動更新索引
l 新增分割槽
l 合併分割槽
l 刪除分割槽
l 交換分割槽
l 合併分割槽
l 修改預設屬性
l 修改分割槽的當前屬性
l 修改列表分割槽:增加值
l 修改列表分割槽:刪除值
l 修改子分割槽模板
l 移動分割槽
l 線上重定義分割槽
l 重建索引分割槽
l 重新命名分割槽
l 分割分割槽
l 截斷分割槽
注意:
以下各節討論分割槽表的維護操作,這些維護操作會影響到索引或索引分割槽的可用性,考慮以下幾點:
?只有非空的索引和索引分割槽才可能被標識為UNUSABLE。如果他們是空的,USABLE/UNUSABLE狀態保持不變。
?只有狀態為可用(USABLE)的索引或索引分割槽可以被後續的DML更新。
在分割槽上可以執行的維護操作
表4-1列出了可以對分割槽表和複合分割槽表進行的維護操作,表4-2列出子分割槽維護操作可以對分割槽表進行復合。對於每種型別的分割槽和分割槽,都列出了維護操作中用到的ALTER TABLE語句的具體子句。
表4-1分割槽表的ALTER TABLE維護操作
維護操作 |
範圍複合 Range-* |
間隔複合 Interval-* |
雜湊 |
列表複合 List-* |
引用 |
新增分割槽 |
ADD PARTITION |
ADD PARTITION |
ADD PARTITION |
ADD PARTITION |
N/A |
合併分割槽 |
N/A |
N/A |
COALESCE PARTITION |
N/A |
N/A |
刪除分割槽 |
DROP PARTITION |
DROP PARTITION |
N/A |
DROP PARTITION |
N/A |
交換分割槽 |
EXCHANGE PARTITION |
EXCHANGE PARTITION |
EXCHANGE PARTITION |
EXCHANGE PARTITION |
EXCHANGE PARTITION |
合併分割槽 |
MERGE PARTITIONS |
MERGE PARTITIONS |
N/A |
MERGE PARTITIONS |
N/A |
修改預設屬性 |
MODIFY DEFAULT ATTRIBUTES |
MODIFY DEFAULT ATTRIBUTES |
MODIFY DEFAULT ATTRIBUTES |
MODIFY DEFAULT ATTRIBUTES |
MODIFY DEFAULT ATTRIBUTES |
修改分割槽的當前屬性 |
MODIFY PARTITION |
MODIFY PARTITION |
MODIFY PARTITION |
MODIFY PARTITION |
MODIFY PARTITION |
修改列表分割槽:增加值 |
N/A |
N/A |
N/A |
MODIFY PARTITION ... ADD VALUES |
N/A |
修改列表分割槽:刪除值 |
N/A |
N/A |
N/A |
MODIFY PARTITION ... DROP VALUES |
N/A |
移動分割槽 |
MOVE SUBPARTITION |
MOVE SUBPARTITION |
MOVE PARTITION |
MOVE SUBPARTITION |
MOVE PARTITION |
重新命名分割槽 |
RENAME PARTITION |
RENAME PARTITION |
RENAME PARTITION |
RENAME PARTITION |
RENAME PARTITION |
分割分割槽 |
SPLIT PARTITION |
SPLIT PARTITION |
N/A |
SPLIT PARTITION |
N/A |
截斷分割槽 |
TRUNCATE PARTITION |
TRUNCATE PARTITION |
TRUNCATE PARTITION |
TRUNCATE PARTITION |
TRUNCATE PARTITION |
表4-2子分割槽表的ALTER TABLE維護操作
維護操作 |
複合 *-Range |
複合 *-Hash |
複合 *-List |
新增分割槽 |
MODIFY PARTITION ... ADD SUBPARTITION |
MODIFY PARTITION ... ADD SUBPARTITION |
MODIFY PARTITION ... ADD SUBPARTITION |
合併分割槽 |
N/A |
MODIFY PARTITION ... COALESCE SUBPARTITION |
N/A |
刪除分割槽 |
DROP SUBPARTITION |
N/A |
DROP SUBPARTITION |
交換分割槽 |
EXCHANGE SUBPARTITION |
N/A |
EXCHANGE SUBPARTITION |
合併分割槽 |
MERGE SUBPARTITIONS |
N/A |
MERGE SUBPARTITIONS |
修改預設屬性 |
MODIFY DEFAULT ATTRIBUTES FOR PARTITION |
MODIFY DEFAULT ATTRIBUTES FOR PARTITION |
MODIFY DEFAULT ATTRIBUTES FOR PARTITION |
修改分割槽的當前屬性 |
MODIFY SUBPARTITION |
MODIFY SUBPARTITION |
MODIFY SUBPARTITION |
修改列表分割槽:增加值 |
N/A
|
N/A
|
MODIFY SUBPARTITION ... ADD VALUES |
修改列表分割槽:刪除值 |
N/A
|
N/A
|
MODIFY SUBPARTITION ... DROP VALUES |
修改子分割槽模板 |
SET SUBPARTITION TEMPLATE |
SET SUBPARTITION TEMPLATE |
SET SUBPARTITION TEMPLATE |
移動分割槽 |
MOVE SUBPARTITION |
MOVE SUBPARTITION |
MOVE SUBPARTITION |
重新命名分割槽 |
RENAME SUBPARTITION |
RENAME SUBPARTITION |
RENAME SUBPARTITION |
分割分割槽 |
SPLIT SUBPARTITION |
N/A
|
SPLIT SUBPARTITION |
截斷分割槽 |
TRUNCATE SUBPARTITION |
TRUNCATE SUBPARTITION |
TRUNCATE SUBPARTITION |
注意:
當您第一次使用表壓縮,將壓縮分割槽引入一個包含點陣圖索引並且只包含未壓縮分割槽的分割槽表,你必須做到以下幾點:
l 刪除所有現存的點陣圖索引和點陣圖分割槽索引,或者將它們標識為UNUSABLE;
l 設定表壓縮屬性
l 重建索引
分割槽是否包含資料,和引入壓縮分割槽的操作是相互獨立的。
另外,這並不適用於包含B-tree索引的分割槽表以及分割槽索引組織表。
表4-3列出了可以對索引分割槽進行的維護操作,並指出可以操作的索引型別(全域性或區域性)。而且,還列出了用於維護操作的ALTER INDEX子句。
全域性索引並不反映基表的結構。如果分割槽,它們可透過範圍或雜湊進行分割槽。全域性分割槽索引可以共享在分割槽表上的部分操作,而不是全部。
由於本地索引反映了基表的結構,在對分割槽或者子分割槽進行維護操作時,索引分割槽會自動被維護。因此,維護本地索引分割槽的必要性大打折扣,並且相應的選項也很少。
表4-3 索引分割槽的ALTER INDEX維護操作
維護操作 |
索引型別 |
索引分割槽型別 |
||
範圍 |
雜湊和列表 |
複合 |
||
新增索引分割槽 |
Global |
- |
ADD PARTITION (hash only) |
- |
|
Local |
N/A |
N/A |
N/A |
刪除索引分割槽 |
Global |
DROP PARTITION |
- |
- |
|
Local |
N/A |
N/A |
N/A |
修改索引分割槽的預設屬性 |
Global |
MODIFY DEFAULT ATTRIBUTES |
- |
- |
|
Local |
MODIFY DEFAULT ATTRIBUTES |
MODIFY DEFAULT ATTRIBUTES |
MODIFY DEFAULT ATTRIBUTES
MODIFY DEFAULT ATTRIBUTES FOR PARTITION |
修改索引分割槽的當前屬性 |
Global |
MODIFY PARTITION
|
- |
- |
|
Local |
MODIFY PARTITION
|
MODIFY PARTITION
|
MODIFY PARTITION
MODIFY SUBPARTITION |
重建索引分割槽 |
Global |
REBUILD PARTITION |
- |
- |
|
Local |
REBUILD PARTITION |
REBUILD PARTITION |
REBUILD SUBPARTITION |
重新命名索引分割槽 |
Global |
RENAME PARTITION |
- |
- |
|
Local |
RENAME PARTITION |
RENAME PARTITION |
RENAME PARTITION
RENAME SUBPARTITION |
分割索引分割槽 |
Global |
SPLIT PARTITION |
- |
- |
|
Local |
N/A |
N/A |
N/A |
自動更新索引
在討論針對分割槽表和索引的各個維護操作之前,討論一下可以在ALTER TABLE語句中指定的UPDATE INDEXES子句的影響,是十分重要的。
預設情況下,分割槽表上的很多維護操作都會使相關的索引或索引分割槽無效(標識為)UNUSABLE。你必須重建整個索引,或者對於一個全域性索引,或者對於每一個分割槽索引。如果你在ALTER TABLE語句中指定了UPDATE INDEXES子句,資料庫會預設這行這些操作。指定UPDATE INDEXES子句會告訴資料庫當執行DDL維護操作時的同時去更新索引。這提供了以下優點:
l 索引更新與基表操作時同步的,不需要你以後手動更新和單獨重建索引
l 全域性索引的高可用性,因為他們沒有被標識為UNUSABLE,當執行分割槽表的DDL操作時,這些索引仍是可用的,並且你可以訪問那些不受影響的分割槽表。
l 你不必查詢所有無效索引的名字來重建他們。
在更新本地索引及其分割槽時,你可以透過可選子句來指定物理和儲存特性。
你可以為每個本地索引的每個分割槽指定物理特性、表空間儲存以及日誌特性。或者,你可以只指定PARTITION關鍵字,讓資料庫按照以下原則來更新分割槽特性:
l 對於單個表分割槽操作(如移動分割槽和分割分割槽),相應的索引分割槽繼承了受影響的索引分割槽的特性。資料庫不會生成新的索引分割槽名稱,所以這個操作生成的新的索引分割槽以及相應的新的表分割槽都會繼承他們原來的名字。
l 對於合併分割槽操作,新生成的本地分割槽索引從新生成的表分割槽那裡繼承名稱,並且從本地索引中繼承其特性。
l 對於複合分割槽索引,你可以為每個子分割槽指定表空間儲存特性。
以下子句可以指定UPDATE INDEXES子句:
l ADD PARTITION | SUBPARTITION
l COALESCE PARTITION | SUBPARTITION
l DROP PARTITION | SUBPARTITION
l EXCHANGE PARTITION | SUBPARTITION
l MERGE PARTITION | SUBPARTITION
l MOVE PARTITION | SUBPARTITION
l SPLIT PARTITION | SUBPARTITION
l TRUNCATE PARTITION | SUBPARTITION
SKIP_UNUSABLE_INDEXES初始化引數
SKIP_UNUSABLE_INDEXES是預設設定為TRUE的初始化引數。當索引或者索引分割槽被標識為UNUSABLE時,該設定禁止由此產生的錯誤報告。如果你不希望資料庫選擇其他的執行計劃,以避免無法使用的索引,那麼你應該將此引數設定為FALSE。
自動更新索引的注意事項
當指定UPDATE INDEXES子句時,需要注意以下事項:
分割槽DDL語句需要更長的時間來執行,因為先前標記為UNUSABLE的索引需要進行更新。儘管如此,你必須比較它與與執行DDL操作然後重新生成所有索引的時間。一個經驗法則是,如果該分割槽的大小小於該表大小的5%,自動更新索引還是相對較快的。
刪除、階段和交換操作不再是快速操作,同樣的,你需要比較一下二者的時間。
當你更新包含全域性索引的表時:
索引被更新,同時更新操作生成日誌記錄,併產生redo和undo日誌。相反,如果你重建整個全域性索引,你可以在NOLOGGING模式下進行操作。
手動重建整個索引將會生成一個更有效的索引,因為它更緊湊,提高空間利用率。
索引組織表不支援UPDATE INDEXES子句。但是,為了保持索引組織表的全域性索引的可用性,在執行刪除分割槽、截斷分割槽和交換分割槽操作時,需要指定UPDATE GLOBAL INDEXES子句。對於上述列表中的其餘操作,索引組織表的全域性索引保持可用。此外,索引組織表的本地索引分割槽在執行MOVE PARTITION操作之後仍然可用。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30162081/viewspace-1734577/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle11g維護分割槽(八)——Renaming PartitionsOracle
- Oracle11g維護分割槽(四)——Exchanging PartitionsOracle
- Oracle11g維護分割槽(二)——Coalescing PartitionsOracle
- Oracle11g維護分割槽(三)——Dropping PartitionsOracle
- Oracle11g維護分割槽(九)——Truncatinging PartitionsOracle
- Oracle11g維護分割槽(五)——Merging PartitionsOracle
- Oracle11g維護分割槽(一)——Adding PartitionsOracle
- Oracle11g維護分割槽(六)——Modifying Default AttributesOracle
- Oracle11g維護分割槽(七)——Modifying Real Attributes of PartitionsOracle
- oracle分割槽表的維護Oracle
- 【轉】Oracle分割槽表維護Oracle
- 分割槽索引維護(add partition)索引
- 測試oracle子分割槽維護Oracle
- oracle分割槽及分割槽索引partition_partition index_維護(一)Oracle索引Index
- oracle分割槽及分割槽索引partition_partition index_維護(二)Oracle索引Index
- oracle分割槽及分割槽索引partition_partition index_維護(三)Oracle索引Index
- oracle分割槽及分割槽索引partition_partition index_維護(四)Oracle索引Index
- Oracle11g INTERVAL分割槽新增分割槽策略Oracle
- 海量資料處理_表分割槽(分割槽自動維護與歷史分割槽歸檔)
- ORACLE分割槽表梳理系列(二)- 分割槽表日常維護及注意事項Oracle
- oracle分割槽及分割槽索引partition_partition index_維護(五)_快捷方法Oracle索引Index
- 關於 Oracle 分割槽索引的建立和維護Oracle索引
- 在範圍分割槽表上分割槽維護操作對索引狀態的影響索引
- 在範圍分割槽表上分割槽維護操作對索引狀態的影響(1)索引
- Oracle表分割槽技術概述Oracle
- 【eygle】Oracle的分割槽表和Local索引建立與維護Oracle索引
- Oracle分割槽表基礎運維-07增加分割槽(2 HASH分割槽)Oracle運維
- Oracle分割槽表基礎運維-07增加分割槽(1範圍分割槽)Oracle運維
- Oracle分割槽表基礎運維-02範圍分割槽Oracle運維
- Oracle分割槽表基礎運維-03HASH分割槽Oracle運維
- Oracle分割槽表基礎運維-05組合分割槽Oracle運維
- Oracle分割槽表基礎運維-06分割槽表索引Oracle運維索引
- Oracle分割槽表基礎運維-09刪除分割槽Oracle運維
- Oracle分割槽表基礎運維-07增加分割槽(3列表分割槽)Oracle運維
- 在範圍分割槽表上分割槽維護操作對全域性及本地索引狀態的影響(2)索引
- Oracle分割槽表基礎運維-01分割槽表分類Oracle運維
- Oracle分割槽表基礎運維-04列表分割槽Oracle運維
- Oracle 12.2 BUG :分割槽維護導致的 ORA-600 KKPOFPCD3Oracle