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分割槽表和分割槽表exchangeOracle
- hive學習筆記之四:分割槽表Hive筆記
- oracle分割槽表和非分割槽表exchangeOracle
- [oracle] expdp 匯出分割槽表的分割槽Oracle
- oracle 分割槽表move和包含分割槽表的lob moveOracle
- ORACLE分割槽表梳理系列Oracle
- Oracle分割槽表基礎運維-04列表分割槽Oracle運維
- Oracle分割槽表基礎運維-07增加分割槽(3列表分割槽)Oracle運維
- oracle將表配置為分割槽表Oracle
- oracle 普通表-分割槽表改造流程Oracle
- 【Linux】MBR磁碟分割槽表只能有四個分割槽?Linux
- Oracle分割槽表基礎運維-06分割槽表索引Oracle運維索引
- Oracle分割槽表基礎運維-07增加分割槽(2 HASH分割槽)Oracle運維
- Oracle分割槽表基礎運維-09刪除分割槽Oracle運維
- Oracle分割槽表基礎運維-05組合分割槽Oracle運維
- Oracle分割槽表基礎運維-02範圍分割槽Oracle運維
- Oracle分割槽表基礎運維-03HASH分割槽Oracle運維
- Oracle分割槽表基礎運維-07增加分割槽(1範圍分割槽)Oracle運維
- Oracle分割槽表基礎運維-01分割槽表分類Oracle運維
- Oracle SQL調優之分割槽表OracleSQL
- 對oracle分割槽表的理解整理Oracle
- oracle 線上重新定義,普通表改變分割槽表,分割槽表可以更改型別、分割槽欄位等Oracle型別
- Oracle 12.2之後ALTER TABLE .. MODIFY轉換非分割槽表為分割槽表Oracle
- ORACLE刪除-表分割槽和資料Oracle
- Oracle分割槽表基礎運維-07增加分割槽(4 RANGE_HASH)Oracle運維
- Oracle分割槽表基礎運維-07增加分割槽(5RANGE_LIST)Oracle運維
- Oracle分割槽表基礎運維-07增加分割槽(6RANGE_RANGE)Oracle運維
- Oracle drop分割槽表單個分割槽無法透過閃回恢復Oracle
- oracle 19C新特性——混合分割槽表Oracle
- oracle 更改分割槽表資料 ora-14402Oracle
- oracle分割槽表的分類及測試Oracle
- PostgreSQL/LightDB 分割槽表之分割槽裁剪SQL
- Oracle 12C新特性-線上把非分割槽錶轉為分割槽表Oracle
- PG的非分割槽表線上轉分割槽表
- Spark學習——分割槽Partition數Spark
- 【MYSQL】 分割槽表MySql
- 非分割槽錶轉換成分割槽表
- ORACLE 19c 新特性之混合分割槽表Oracle
- index_oracle索引梳理系列及分割槽表梳理IndexOracle索引