oracle分割槽表學習(四)
列表分割槽:
default分割槽的使用注意:一旦列表分割槽表有一個default分割槽,就不能再向這個表中增加更多的分割槽了
組合分割槽:是區間分割槽和雜湊分割槽的組合,或者是區間分割槽與列表分割槽的組合。
在組合分割槽中,頂層分割槽機制總是區間分割槽。使用組合分割槽時,並沒有分割槽段,而只有子分割槽段。分割槽本身並沒有段,資料物理的儲存在子分割槽段上,分割槽成為一個邏輯容器,或者是一個指向實際子分割槽的容器。
每個區間分割槽不需要有相同數目的子分割槽
行移動:
如果用於確定分割槽的列有修改會發生什麼,需要考慮兩種情況:
1、 修改不會導致使用一個不同的分割槽;行仍屬於原來的分割槽。這在所有情況下都得到支援。
修改會導致行跨分割槽移動。只有當表啟用了行移動時才支援這種情況;否則,會產生一個錯誤。
更新記錄的分割槽鍵列,記錄不屬於原來的行,啟動行移動;
更新時rowid會改變,在其他一些情況下,rowid也有可能因為更新而改變。更新iot的主鍵可能導致rowid改變,改行的通用rowid(urowid)也會改變
。oracle10g的FLASHBACK TABLE 命令可能改變行的rowid,此外oracle10g的alter table shrink命令也可能使行的rowid改變。
行移動的開銷比正常的update昂貴的多,所以構建的系統不應該你頻繁修改分割槽鍵。
Connected to Oracle Database 10g Enterprise Edition Release 10.2.0.1.0
Connected as SYS
SQL> 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/2005','dd/mm/yyyy')),
8 PARTITION part_2 VALUES LESS THAN
9 (to_date('01/01/2006','dd/mm/yyyy')),
10 PARTITION part_3 VALUES LESS THAN
11 (MAXVALUE)
12 )
13 /
Table created
SQL> insert into range_example
2 ( range_key_column, data )
3 values
4 ( to_date( '15-01-2004 00:00:00',
5 'dd-mm-yyyy hh24:mi:ss' ),
6 'application data...' );
1 row inserted
SQL> insert into range_example
2 ( range_key_column, data )
3 values
4 ( to_date( '01-6-2005 00:00:00',
5 'dd-mm-yyyy hh24:mi:ss' )-1/24/60/60,
6 'application data...' )
7 /
1 row inserted
SQL> insert into range_example
2 ( range_key_column, data )
3 values
4 ( to_date( '01-01-2005 00:00:00',
5 'dd-mm-yyyy hh24:mi:ss' )-1/24/60/60,
6 'application data...' )
7 /
1 row inserted
SQL> select * from range_example partition(part_1);
RANGE_KEY_COLUMN DATA
---------------- --------------------
2004-1-15 application data...
2004-12-31 23:59 application data...
SQL> update range_example
2 set range_key_column = trunc(range_key_column)
3 where range_key_column =
4 to_date( '31-12-2004 23:59:59',
5 'dd-mm-yyyy hh24:mi:ss' );
1 row updated
SQL> update range_example
2 set range_key_column = to_date('02-1-2005','dd-mm-yyyy')
3 where range_key_column = to_date('31-12-2004','dd-mm-yyyy')
4 /
update range_example
set range_key_column = to_date('02-1-2005','dd-mm-yyyy')
where range_key_column = to_date('31-12-2004','dd-mm-yyyy')
ORA-14402: 更新分割槽關鍵字列將導致分割槽的更改
SQL> select rowid
2 from range_example
3 where range_key_column = to_date('31-12-2004','dd-mm-yyyy');
ROWID
------------------
AAAPRnAABAAAR8yAAB
SQL> alter table range_example
2 enable row movement;
Table altered
SQL>
SQL> update range_example
2 set range_key_column = to_date('02-1-2005','dd-mm-yyyy')
3 where range_key_column = to_date('31-12-2004','dd-mm-yyyy')
4 /
1 row updated
SQL>
SQL> select rowid
2 from range_example
3 where range_key_column = to_date('31-12-2004','dd-mm-yyyy');
ROWID
------------------
SQL>
SQL> select rowid
2 from range_example
3 where range_key_column = to_date('02-1-2005','dd-mm-yyyy');
ROWID
------------------
AAAPRoAABAAAR86AAB
組合分割槽,可以先應用區間分割槽,再進一步劃分各個區間,按一個雜湊函式或使用列表來分割槽。這樣就能將I/O請求分佈到任何給定大分割槽中的多個磁碟上。另外,現在可以得到3個層次的分割槽消除:
如果在區間分割槽鍵上查詢,oracle就能消除任何不滿足條件的區間分割槽。如果向查詢增加雜湊或列表鍵,oracle可以消除該區間中其他的雜湊或列表分割槽。如果只是在雜湊或列表鍵上查詢(而不使用區間分割槽鍵),oracle就只會查詢各個區間分割槽中的這些雜湊或列表子分割槽
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/25323853/viewspace-687091/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 深入學習Oracle分割槽表及分割槽索引Oracle索引
- 【學習筆記】分割槽表和分割槽索引——管理索引分割槽(四)筆記索引
- oracle分割槽表學習(三)Oracle
- oracle分割槽表學習(二)Oracle
- oracle分割槽表學習(一)Oracle
- hive學習筆記之四:分割槽表Hive筆記
- oracle分割槽表學習及應用Oracle
- 全面學習分割槽表及分割槽索引(13)--分隔表分割槽索引
- 全面學習分割槽表及分割槽索引(9)--刪除表分割槽索引
- 全面學習分割槽表及分割槽索引(11)--合併表分割槽索引
- 全面學習分割槽表及分割槽索引(12)--修改list表分割槽索引
- 學習筆記】分割槽表和分割槽索引——新增表分割槽(二)筆記索引
- 全面學習分割槽表及分割槽索引(10)--交換分割槽索引
- 全面學習分割槽表及分割槽索引(1)索引
- 深入學習分割槽表及分割槽索引(1)索引
- 【三思筆記】 全面學習Oracle分割槽表及分割槽索引筆記Oracle索引
- 全面學習分割槽表及分割槽索引(8)--增加和收縮表分割槽索引
- 【學習筆記】分割槽表和分割槽索引——分割槽表的其他管理(三)筆記索引
- oracle分割槽表和分割槽表exchangeOracle
- 分割槽表學習之三
- 分割槽表學習之二
- 分割槽表學習之一
- 分割槽表學習筆記筆記
- 全面學習分割槽表及分割槽索引(15)--修改表分割槽屬性和模板索引
- Oracle分割槽表及分割槽索引Oracle索引
- oracle分割槽表和非分割槽表exchangeOracle
- 全面學習分割槽表及分割槽索引(17)--其它索引分割槽管理操作索引
- Oracle 表分割槽Oracle
- oracle分割槽表Oracle
- oracle表分割槽Oracle
- Oracle 分割槽表Oracle
- 簡單ORACLE分割槽表、分割槽索引Oracle索引
- 全面學習分割槽表及分割槽索引(16)--增加和刪除索引分割槽索引
- 全面學習分割槽表及分割槽索引(7)--怎樣管理索引
- 【學習筆記】分割槽表和分割槽索引——概念部分(一)筆記索引
- 全面學習分割槽表及分割槽索引(6)--建立range-list組合分割槽索引
- Oracle 建立分割槽表Oracle
- ORACLE分割槽表管理Oracle