Oracle 表分割槽
檢視錶分割槽 user_tab_partitions
--範圍分割槽
JOHN@ ora10g> create table range_example
2 ( range_key_column date not null,
3 data varchar2(20)
4 )
5 partition by range (range_key_column)
6 (partition part_1 values less than
7 (to_date('01/01/2010','dd/mm/yyyy')),
8 partition part_2 values less than
9 (to_date('01/01/2011','dd/mm/yyyy'))
10 );
JOHN@ ora10g> insert into range_example values(
2 to_date('01/02/2010','dd/mm/yyyy'),
3 'this is a test!');
JOHN@ ora10g> select * from range_example;
RANGE_KEY_CO DATA
------------ --------------------
01-FEB-10 this is a test!
JOHN@ ora10g> select * from range_example partition (part_1);
no rows selected
JOHN@ ora10g> select * from range_example partition (part_2);
RANGE_KEY_CO DATA
------------ --------------------
01-FEB-10 this is a test!
JOHN@ ora10g> select TABLE_NAME, PARTITION_NAME from user_tab_partitions;
TABLE_NAME PARTITION_NAME
------------------------------ ------------------------------
RANGE_EXAMPLE PART_1
RANGE_EXAMPLE PART_2
對於超過範圍的可以用maxvalue,其他資料就會放到part_3分割槽
JOHN@ ora10g> create table range_example
2 ( range_key_column date,
3 data varchar2(20)
4 )
5 partition by range (range_key_column)
6 ( partition part_1 values less than
7 (to_date('01/01/2010', 'dd/mm/yyyy')),
8 partition part_2 values less than
9 (to_date('01/01/2011', 'dd/mm/yyyy')),
10 partition part_3 values less than
11 (maxvalue)
12 );
--雜湊分割槽
JOHN@ ora10g> create table hash_example
2 ( hash_key_column date,
3 data varchar2(20)
4 )
5 partition by hash (hash_key_column)
6 ( partition part_1 tablespace users,
7 partition part_2 tablespace example
8 );
雜湊分割槽數建議是2的冪,這樣資料的分佈會比較均勻。
--列表分割槽
JOHN@ ora10g> create table list_example
2 ( state_cd varchar2(2),
3 data varchar2(20)
4 )
5 partition by list(state_cd)
6 ( partition part_1 values ('ME','NH','VT','MA'),
7 partition part_2 values ('CT','RI','NY'),
8 partition part_3 values (default)
9 );
不符合分割槽1和分割槽2的資料會放到分割槽3。
--間隔分割槽(11g新特性)
JOHN@ ora10g> create table audit_trail
2 ( ts timestamp,
3 data varchar2(30)
4 )
5 partition by rang(ts)
6 interval (numtoyminterval(1,'month'))
7 store in (users, example)
8 (partition p0 values less than (to_date('01-01-1900','dd-mm-yyyy'))
9 );
會自動根據資料增加分割槽。
--引用分割槽(11g新特性)
--父表orders
JOHN@ ora10g> create table orders
2 ( order# number primary key,
3 order_date date,
4 data varchar2(30)
5 )
6 enable row movement
7 partition by range (order_date)
8 ( partition part_2009 values less than (to_date('01-01-2010','dd-mm-yyyy')),
9 partition part_2010 values less than (to_date('01-01-2011','dd-mm-yyyy'))
10 );
--子表order_line_tiems
JOHN@ ora10g> create table order_line_items
2 ( order# number,
3 line# number,
4 data varchar2(30),
5 constraint c1_pk primary key(order#,line#),
6 constraint c1_fk_p foreign key(order#) references orders
7 )
8 enable row movement
9 partition by reference(c1_fk_p);
11gr2暫時不支援引用分割槽和間隔分割槽結合使用。
--組合分割槽
組合分割槽支援的版本
區間 列表 雜湊
區間 11gr1 9ir2 9ir1
列表 11gr1 11gr1 11gr1
雜湊 11gr2 11gr2 11gr2
先橫向再縱向
JOHN@ ora10g> create table composite_example
2 ( range_key_column date,
3 hash_key_column int,
4 data varchar2(20)
5 )
6 partition by range (range_key_column)
7 subpartition by hash(hash_key_column) subpartition 2
8 ( partition part_1
9 values less than(to_date('01/01/2008','dd/mm/yyyy'))
10 ( subpartition part_1_sub_1,
11 sbupartition part_1_sub_2
12 ),
13 partition part_2
14 values less than(to_date('01/01/2011','dd/mm/yyyy'))
15 ( subpartition part_2_sub_1,
16 subpartition part_2_sub_2
17 )
18 );
全域性索引可以分割槽也可以不分割槽。
全域性不分割槽的索引類似於未分割槽表的普通Oracle索引。
全域性分割槽索引的管理設計重要的維護工作。當一個分割槽表中有DDL活動時,其全域性索引都會被標記為無用,需要重建。
本地分割槽索引於全域性分割槽索引不同,前者與表分割槽有一對一的對應關係。可以建立本地分割槽索引來匹配分割槽甚至子分割槽。資料庫構造此索引以便與基表一起均勻分佈。任何時候,在修改基表分割槽時,索引分割槽都將自動維護。這是本地分割槽索引的最大優點。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/27633655/viewspace-1081540/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle分割槽表和分割槽表exchangeOracle
- Oracle分割槽表及分割槽索引Oracle索引
- oracle分割槽表和非分割槽表exchangeOracle
- oracle分割槽表Oracle
- oracle表分割槽Oracle
- Oracle 分割槽表Oracle
- 簡單ORACLE分割槽表、分割槽索引Oracle索引
- Oracle 建立分割槽表Oracle
- ORACLE分割槽表管理Oracle
- [oracle] expdp 匯出分割槽表的分割槽Oracle
- Oracle分割槽表基礎運維-06分割槽表索引Oracle運維索引
- oracle 分割槽表move和包含分割槽表的lob moveOracle
- 深入學習Oracle分割槽表及分割槽索引Oracle索引
- 全面認識oracle分割槽表及分割槽索引Oracle索引
- Oracle分割槽表基礎運維-07增加分割槽(3列表分割槽)Oracle運維
- ORACLE分割槽表梳理系列Oracle
- Oracle分割槽表遷移Oracle
- oracle 分割槽表詳解Oracle
- Oracle分割槽表介紹Oracle
- oracle表分割槽詳解Oracle
- oracle分割槽表詳解Oracle
- Oracle 分割槽表的建立Oracle
- Oracle分割槽表(Partition Table)Oracle
- oracle 分割槽表總結Oracle
- Oracle 分割槽表 總結Oracle
- oracle表分割槽自我理解Oracle
- Oracle分割槽表的使用Oracle
- Oracle中重建表分割槽Oracle
- ORACLE分割槽表管理[轉]Oracle
- Oracle 表分割槽詳解Oracle
- Oracle分割槽表的管理Oracle
- Oracle分割槽表基礎運維-01分割槽表分類Oracle運維
- Oracle分割槽表基礎運維-04列表分割槽Oracle運維
- oracle 普通表-分割槽表改造流程Oracle
- oracle將表配置為分割槽表Oracle
- [引用分割槽表]Oracle 11g新特性之引用分割槽表Oracle
- Oracle帶區域性分割槽索引的分割槽表刪除舊分割槽新增新分割槽Oracle索引
- Oracle分割槽表基礎運維-07增加分割槽(2 HASH分割槽)Oracle運維