Oracle11g維護分割槽概述

Hoegh發表於2015-07-15

本章節介紹瞭如何為表和索引進行分割槽和子分割槽的維護操作。

本章節包含以下主題:

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%,自動更新索引還是相對較快的。

刪除、階段和交換操作不再是快速操作,同樣的,你需要比較一下二者的時間。

 

當你更新包含全域性索引的表時:

索引被更新,同時更新操作生成日誌記錄,併產生redoundo日誌。相反,如果你重建整個全域性索引,你可以在NOLOGGING模式下進行操作。

 

手動重建整個索引將會生成一個更有效的索引,因為它更緊湊,提高空間利用率。

 

索引組織表不支援UPDATE INDEXES子句。但是,為了保持索引組織表的全域性索引的可用性,在執行刪除分割槽、截斷分割槽和交換分割槽操作時,需要指定UPDATE GLOBAL INDEXES子句。對於上述列表中的其餘操作,索引組織表的全域性索引保持可用。此外,索引組織表的本地索引分割槽在執行MOVE PARTITION操作之後仍然可用。

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

相關文章