關於Oracle分區技術初步認識

來源:互聯網
上載者:User

關於Oracle分區技術初步認識

一、  分區類型

1. 定界分割(Range Partitioning)

適用於  連續/按時間排序的資料

2. 散列分區(Hash Partitioning)

適用於  不連續/資料記錄固定的資料

3. 組合分區 Range-Hash

Range-List

4. 列表分區 List Partitioning

適用於對不連續域的資料分區

更準確的控制資料的分區儲存

適用於 位置類資料

二、  分區表的維護

準備工作

SYS@ORA11G>create tablespace sales_ts01

  2  datafile'/u01/app/Oracle/oradata/ORA11G/sales_ts01_01.dbf' size 10m;

 

Tablespace created.

 

SYS@ORA11G>create tablespace sales_ts02

  2  datafile'/u01/app/oracle/oradata/ORA11G/sales_ts02_01.dbf' size 10m;

 

Tablespace created.

 

SYS@ORA11G>create tablespace sales_ts03

  2  datafile'/u01/app/oracle/oradata/ORA11G/sales_ts03_01.dbf' size 10m;

 

Tablespace created.

 

SYS@ORA11G>create tablespace sales_ts04

  2  datafile'/u01/app/oracle/oradata/ORA11G/sales_ts04_01.dbf' size 10m;

 

Tablespace created.

 

SYS@ORA11G>create tablespace sales_ts05

  2  datafile'/u01/app/oracle/oradata/ORA11G/sales_ts05_01.dbf' size 10m;

 

Tablespace created.

 

SYS@ORA11G>create tablespace sales_ts06

  2  datafile'/u01/app/oracle/oradata/ORA11G/sales_ts06_01.dbf' size 10m;

 

Tablespace created.

 

SYS@ORA11G>

SYS@ORA11G>

SYS@ORA11G>

SYS@ORA11G>conn tyger/tyger

Connected.

TYGER@ORA11G>

TYGER@ORA11G>

TYGER@ORA11G>CREATE TABLE SALES

(PROD_ID NUMBER,

CUST_ID NUMBER,

TIME_ID DATE,

CHANNEL_ID NUMBER,

PROMO_ID NUMBER,

QUANTITY_SOLD NUMBER(10,2),

AMOUNT_SOLD NUMBER(10,2)

)

PARTITION BY RANGE(TIME_ID)

(PARTITION sales01 values less than ('01-Feb-2004')TABLESPACE SALES_TS01,

PARTITION sales02 values less than ('01-Mar-2004')TABLESPACE SALES_TS02,

PARTITION sales03 values less than ('01-Apr-2004')TABLESPACE SALES_TS03,

PARTITION sales04 values less than ('01-May-2004')TABLESPACE SALES_TS04,

PARTITION sales05 values less than ('01-Jun-2004')TABLESPACE SALES_TS05,

PARTITION sales06 values less than ('01-Jul-2004')TABLESPACE SALES_TS06

);  2    3  4    5    6  7    8    9  10  11  12  13  14  15  16  17 

 

Table created.

TYGER@ORA11G>selectTABLE_NAME,PARTITIONING_TYPE,SUBPARTITIONING_TYPE,STATUS

  2  from user_part_tables;

 

TABLE_NAME                    PARTITION SUBPARTIT STATUS

------------------------------ --------- -----------------

SALES                          RANGE    NONE    VALID

TYGER@ORA11G>col table_name for a20

TYGER@ORA11G>col tablespace_name for a20

TYGER@ORA11G>l

  1  selectTABLE_NAME,PARTITION_NAME,TABLESPACE_NAME

  2* fromuser_tab_partitions

TYGER@ORA11G>/

 

TABLE_NAME          PARTITION_NAME                TABLESPACE_NAME

-------------------- --------------------------------------------------

SALES              SALES01                      SALES_TS01

SALES              SALES02                      SALES_TS02

SALES              SALES03                      SALES_TS03

SALES              SALES04                      SALES_TS04

SALES              SALES05                        SALES_TS05

SALES              SALES06                      SALES_TS06

 

6 rows selected.

 

 

      文法:

ALTERTABLE                        ALTER INDEX

• • ADD PARTITION                  -DROP PARTITION

• • COALESCE PARTITION            - MODIFY PARTITION

• • DROP PARTITION                - MODIFY DEFAULT ATTRIBUTES

• • EXCHANGE PARTITION            - MODIFY PARTITION COALESCE

• • MERGE PARTITIONS              - REBUILD PARTITION

• • MODIFY PARTITION              - RENAME PARTITION

• • MODIFY DEFAULT                -SPLIT PARTITION

ATTRIBUTES                        - UNUSABLE

• • MOVE PARTITION

• • RENAME PARTITION

• • SPLIT PARTITION

 

2.1 刪除表分區

Alter table sales droppartition sales01;

TYGER@ORA11G>alter table sales drop partitionsales01;

 

Table altered.

 

TYGER@ORA11G>selectTABLE_NAME,PARTITION_NAME,TABLESPACE_NAME

  2  from user_tab_partitions;

 

TABLE_NAME          PARTITION_NAME                TABLESPACE_NAME

-------------------- --------------------------------------------------

SALES              SALES02                      SALES_TS02

SALES              SALES03                        SALES_TS03

SALES              SALES04                      SALES_TS04

SALES              SALES05                      SALES_TS05

SALES              SALES06                      SALES_TS06

2.2 增加表分區

  增加分區的分區範圍必須比當前分區的最後一個分區更高

TYGER@ORA11G>alter table sales add partitionsales01 values less than ('01-Feb-2004') tablespace sales_ts01;

alter table sales add partition sales01 values lessthan ('01-Feb-2004') tablespace sales_ts01

                                *

ERROR at line 1:

ORA-14074: partition bound mustcollate higher than that of the last partition

 

 

TYGER@ORA11G>alter table sales add partitionsales01

  2  values less than ('01-Aug-2004') tablespacesales_ts01;

 

Table altered.

 

TYGER@ORA11G>selecttable_name,partition_name,tablespace_name

  2  from user_tab_partitions;

 

TABLE_NAME          PARTITION_NAME                TABLESPACE_NAME

-------------------- --------------------------------------------------

SALES              SALES02                        SALES_TS02

SALES              SALES03                      SALES_TS03

SALES              SALES04                      SALES_TS04

SALES              SALES05                      SALES_TS05

SALES              SALES06                        SALES_TS06

SALES              SALES01                      SALES_TS01

 

 

2.3 合并分區

    · 必須是相鄰的定界分割

·  繼承最大的範圍邊界

TYGER@ORA11G>alter table sales

  2  merge partitions sales06,sales01 intopartition sales07;

 

Table altered.

 

TYGER@ORA11G>select table_name,partition_name,tablespace_name

  2  from user_tab_partitions;

 

TABLE_NAME          PARTITION_NAME                TABLESPACE_NAME

-------------------- --------------------------------------------------

SALES              SALES07                        USERS

SALES              SALES02                      SALES_TS02

SALES              SALES03                      SALES_TS03

SALES              SALES04                      SALES_TS04

SALES              SALES05                        SALES_TS05

 

2.4 移動表分區

·  移動分區資料到另一個資料表空間

·  重新整理資料減少片段

·  改變物理屬性

TYGER@ORA11G>alter table sales move partitionsales01

  2  tablespace sales_ts_move;

 

2.5 拆分表分區

  拆分表分區———一個分區變的太大,導致備份,恢複和分區效能操作花費時間太長,重新分配I/O負載。

TYGER@ORA11G>alter table sales split partition sales07

  2  at ('01-Jul-2004')          // 按哪個時間點拆分

  3  into (partition sales01 tablespacesales_ts01,

  4        partition sales06 tablespacesales_ts06);

 

Table altered.

 

TYGER@ORA11G>selecttable_name,partition_name,tablespace_name

  2  from user_tab_partitions;

 

TABLE_NAME          PARTITION_NAME                TABLESPACE_NAME

-------------------- --------------------------------------------------

SALES              SALES02                      SALES_TS02

SALES              SALES03                        SALES_TS03

SALES              SALES04                      SALES_TS04

SALES              SALES05                      SALES_TS05

SALES              SALES06                      SALES_TS06

SALES              SALES01                        SALES_TS01

 

6 rows selected.

更多詳情見請繼續閱讀下一頁的精彩內容:

  • 1
  • 2
  • 下一頁

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.