oracle

表分区技术是在超大型数据库(VLDB)中将大表及其索引通过分区(patition)
的形式分割为若干较小、可管理的小块,
并且每一分区可进一步划分为更小的子分区(sub partition)。
而这种分区对于应用来说是透明的。通过对表进行分区,可以获得以下的好处:

  1)减少数据损坏的可能性。

  2)各分区可以独立备份和恢复,增强了数据库的可管理性。

  3)可以控制分区在硬盘上的分布,以均衡IO,改善了数据库的性能

 存在两种重定义方法,一种是基于主键、另一种是基于ROWID。ROWID的方式不能用于索引组织表,
而且重定义后会存在隐藏列M_ROW$$。默认采用主键的方式。
 Oracle 9以上提供了在线重定义表的功能。

1

创建空间
create tablespace
space1 datafile 'D:\oracle\oradata\yssf\space1.dbf' size 50M


create tablespace
space2 datafile 'D:\oracle\oradata\yssf\space2.dbf' size 50M

2

    (1) 范围分区 按ID的范围分区
 CREATE TABLE T_testing (字段
 ) PARTITION BY RANGE (ID)
(PARTITION P1 VALUES LESS THAN (10000)
 tablespace space1,
 PARTITION P2 VALUES LESS THAN (20000)
 tablespace space2,
  PARTITION P3 VALUES LESS THAN (30000)
 tablespace space3,
  PARTITION P4 VALUES LESS THAN (40000)
 tablespace space4,
  PARTITION P5 VALUES LESS THAN (50000)
 tablespace space5,
 PARTITION P6 VALUES LESS THAN (maxvalue) )
 AS SELECT 字段
  FROM testing;

(2)列表

CREATE TABLE sales_list(
  salesman_id NUMBER(5),
  salesman_name VARCHAR2(30),
  sales_state VARCHAR2(20),
  sales_amount NUMBER(10),
  sales_date DATE)
PARTITION BY LIST(sales_state)(
PARTITION sales_west VALUES('California', 'Hawaii'),
PARTITION sales_east VALUES ('New York', 'Virginia', 'Florida'),
PARTITION sales_central VALUES('Texas', 'Illinois'),
PARTITION sales_other VALUES(DEFAULT)
); 

(3)日期范围

create table dinya_test (
transaction_id number primary key,
item_id number(8) not null,
item_description varchar2(300),
transaction_date date not null
) partition by range (transaction_date) (
partition part_01 values less than(to_date(’2006-01-01’,’yyyy-mm-dd’)) tablespace dinya_space01,
partition part_02 values less than(to_date(’2010-01-01’,’yyyy-mm-dd’)) tablespace dinya_space02,
partition part_03 values less than(maxvalue) tablespace dinya_space03
);
(2)

 Hash分区/散列分区

  散列分区为通过指定分区编号来均匀分布数据的一种分区类型,因为通过在 I/O 设备上进行散列分区,使得这些分区大小一致。
 
(3)复合分区是先使用范围分区,然后在每个分区内再使用散列分区的一种分区方法。

3


drop table testing

rename t_testing to testing

你可能感兴趣的:(oracle)