Partition分區是Oracle一直以來推出的效能、管理最佳化技術。在Oracle資料庫技術體系中,Partition是歸屬在DW(Data Warehouse)體系中,也就是Oracle官方認定的處理大資料策略。
單就Partition技術本身而言,11g是一個重要的版本。一些自動化分區技術、增強策略在11g中推出。比如引用分區(Reference Partition)、間斷分區(Interval Partition)、虛擬列分區(Partitioning Virtual Columns)、系統磁碟分割(System Partition)和拓展組合分區(Extended Composite Partitioning)。
本篇目的介紹11g的System Partition特性。
--------------------------------------分割線 --------------------------------------
Oracle 11g新特性:RMAN指令碼中使用替換變數
Oracle 11g 新特性 -- Result Cache(結果快取)說明
Oracle 11g 新特性 -- 自動診斷資料檔案庫(ADR) 說明
Oracle 11g 新特性 -- DB_ULTRA_SAFE 參數 說明
Oracle 11g 新特性 -- SQL Plan Management 說明
Oracle 11g 新特性 -- 管理 SPFILE 說明
--------------------------------------分割線 --------------------------------------
1、環境介紹
筆者選擇Oracle 11R2作為實驗對象。
SQL> select * from v$version;
BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
PL/SQL Release 11.2.0.1.0 - Production
CORE 11.2.0.1.0 Production
TNS for Linux: Version 11.2.0.1.0 - Production
NLSRTL Version 11.2.0.1.0 – Production
2、System Partition
我們在其他的Partition類型中,都會面對一個問題就是分區鍵選擇。所謂分區Partition,就是將一個資料表段segment拆分為多個儲存段儲存。傳統意義上的Partition停留在定義層面,只要我們在資料表定義的時候確定好分區鍵和分區策略。之後的使用資料表的過程中,我們其實對分區是“透明”的。
如果進行資料表的DML操作和select操作,我們是不需要指定、也無法控制資料記錄插入到哪個分區中的。只有一種情況不同,就是修改分區鍵。如果修改分區鍵,並且修改分區鍵會影響到分區布局,這樣的DML操作是不允許的。
11g的System Partition提供了不同選擇。它提供給SQL DML操作者一種選擇,讓可以指定出“希望將資料儲存”在哪個地方。
建立System Partition的過程,也是在定義資料表的過程中需要確定。
SQL> create table t partition by system (partition p1 tablespace users,
2 partition p2 tablespace EXAMPLE) as select * from dba_objects where 1=0 ;
create table t partition by system (partition p1 tablespace users,
partition p2 tablespace EXAMPLE) as select * from dba_objects where 1=0
ORA-14704: 不允許對 SYSTEM 分區表執行以下操作: Create table as select
在system partition中,我們不允許對分區進行spilt操作和cats操作。正確的處理方式,如下:
SQL> create table t
2 (owner varchar2(100),
3 object_name varchar2(1000),
4 object_id number)
5 partition by system
6 (partition p1 tablespace users,
7 partition p2 tablespace example);
Table created
在語句中,我們指定了資料表採用分區策略——system策略,設定了兩個分區p1和p2,並且指定了兩個分區的資料表空間儲存位置。
注意:這個過程中,我們沒有指定分區規則,也就是沒有告訴資料庫當一個資料插入的時候,如何進行資料分堆。
檢查資料字典,確定段結構情況。
SQL> select segment_name, partition_name, segment_type from dba_segments where owner='SCOTT' and segment_name='T';
SEGMENT_NAME PARTITION_NAME SEGMENT_TYPE
-------------------- -------------------- ------------------
T P1 TABLE PARTITION
T P2 TABLE PARTITION
SQL> select partitioning_type from dba_part_tables where owner='SCOTT' and table_name='T';
PARTITIONING_TYPE
-----------------
SYSTEM
分區類型,確定為system partition。在system partiton中,也可以建立local index對象。
SQL> create index idx_t_id on t(object_id) local;
Index created
SQL> select segment_name, partition_name, segment_type from dba_segments where owner='SCOTT' and segment_name='IDX_T_ID';
SEGMENT_NAME PARTITION_NAME SEGMENT_TYPE
-------------------- -------------------- ------------------
IDX_T_ID P1 INDEX PARTITION
IDX_T_ID P2 INDEX PARTITION
更多詳情見請繼續閱讀下一頁的精彩內容: