ORACLE的分区(Partitioning Option)是一种处理超大型表的技术。分区是一种“分而治之”的技术,通过将大表和索引分成可以管理的小块,从而避免了对每个表作为一个大的、单独的对象进行管理,为大量数据提供了可伸缩的性能。分区通过将操作分配给更小的存储单元,减少了需要进行管理操作的时间,并通过增强的并行处理提高了性能,通过屏蔽故障数据的分区,还增加了可用性。
select * from user_tables a where a.partitioned= 'YES '
- CREATE TABLE range
- (id NUMBER(5),
- name VARCHAR2(30),
- amount NUMBER(10),
- sdate DATE)
- COMPRESS
- PARTITION BY RANGE(sdate)
- (PARTITION sales_jan2000 VALUES LESS THAN(TO_DATE('16/09/2009','DD/MM/YYYY')),
- PARTITION sales_feb2000 VALUES LESS THAN(TO_DATE('17/09/2009','DD/MM/YYYY')),
- PARTITION sales_mar2000 VALUES LESS THAN(TO_DATE('18/09/2009','DD/MM/YYYY')),
- PARTITION sales_apr2000 VALUES LESS THAN(TO_DATE('19/09/2009','DD/MM/YYYY')));
CREATE TABLE range
(id NUMBER(5),
name VARCHAR2(30),
amount NUMBER(10),
sdate DATE)
COMPRESS
PARTITION BY RANGE(sdate)
(PARTITION sales_jan2000 VALUES LESS THAN(TO_DATE('16/09/2009','DD/MM/YYYY')),
PARTITION sales_feb2000 VALUES LESS THAN(TO_DATE('17/09/2009','DD/MM/YYYY')),
PARTITION sales_mar2000 VALUES LESS THAN(TO_DATE('18/09/2009','DD/MM/YYYY')),
PARTITION sales_apr2000 VALUES LESS THAN(TO_DATE('19/09/2009','DD/MM/YYYY')));
动态增加分区
- create or replace procedure addpart(tableName varchar2,
- partName varchar2,
- adate varchar2)
- is
- begin
- execute immediate 'alter table ' || tableName || ' add partition ' || partName || '
- values less than (to_date(''' || adate || ''',''YYYY-MM-DD'')' || ')';
- end addpart;
create or replace procedure addpart(tableName varchar2,
partName varchar2,
adate varchar2)
is
begin
execute immediate 'alter table ' || tableName || ' add partition ' || partName || '
values less than (to_date(''' || adate || ''',''YYYY-MM-DD'')' || ')';
end addpart;
增加一个分区:alter table add partition/alter table split partition
释放一个表分区 alter table ** drop partition **