Oracle各个版本分区的变化

Oracle各个版本分区的变化

11g新特性
1. 引用分区
现在,可以根据表的引用约束条件中引用的此表的分区方法对
表进行分区。
分区键是通过现有的父/子关系解析的。
分区键是由活动的主键和外键约束条件强制实施的。
包含父/子关系的表可以通过从父表继承分区键进行均匀分区,
而无需复制键列。
分区是自动维护的。
create table customers
(
cust_id number primary key,
cust_name varchar2(200),
rating varchar2(1) not null
)
partition by list (rating)
(
partition pA values ('A'),
partition pB values ('B')
);
sales 表的创建如下所示。它是 customers 表的一个子表。
create table sales
(
sales_id number primary key,
cust_id number not null,
sales_amt number,
constraint fk_sales_01
foreign key (cust_id)
references customers
);
create table sales
(
sales_id number primary key,
cust_id number not null,
sales_amt number,
constraint fk_sales_01
foreign key (cust_id)
references customers
)
partition by reference (fk_sales_01);
2. 间隔分区
间隔分区是范围分区的一种扩展
当插入的数据超过了所有范围分区时,将创建指定间隔的分区。
必须至少创建一个范围分区。
间隔分区可以自动创建范围分区。
CREATE TABLE sales (order_date DATE, ...) PARTITON BY RANGE (order_date) INTERVAL(NUMTOYMINTERVAL(1,'month') (PARTITION p_first VALUES LESS THAN ('01-JAN-2006' store in (TS1,TS2,TS3)
);
3. 虚拟列分区
虚拟列值是通过计算函数或表达式得到的。
可以在 CREATE 或 ALTER 表操作中定义虚拟列。
虚拟列值实际上并未存储在磁盘上的表行中,而是根据需要
进行计算。
像其它表列类型一样,可以对虚拟列进行索引,可以在查询、
DML 和 DDL 语句中使用它们。
可在虚拟列上对表和索引进行分区,甚至可以收集它们的统
计信息。
create table sales
(
sales_id number,
cust_id number,
sales_amt number,
sale_category varchar2(6)
generated always as
(
case
when sales_amt <= 10000
then 'LOW'
when sales_amt > 10000
and sales_amt <= 100000
then case
when
cust_id < 101 then 'LOW'
when
cust_id between 101 and 200 then 'MEDIUM'
else
'MEDIUM'
end
when sales_amt > 100000
and sales_amt <= 1000000
then case
when
cust_id < 101 then 'MEDIUM'
when
cust_id between 101 and 200 then 'HIGH'
else
'ULTRA'
end
else 'ULTRA'
end
) virtual
)
partition by list (sale_category)
(
partition p_low values ('LOW'),
partition p_medium values ('MEDIUM'),
partition p_high values ('HIGH'),
partition p_ultra values ('ULTRA')
)
4. 系统分区
在数据表上允许应用来控制分区的使用
提供分区的优点,但分区策略以及数据的放置,由应用程序来控制
不使用分区关键字(与传统的表分区不同)
不提供传统意义上的分区裁剪功能
create table sales3
(
sales_id number,
product_code number,
state_code number
)
partition by system
partition p1 tablespace users,
partition p2 tablespace users
);
5. 完全组合分区
二维分区模式,支持更多方式

范围-范围
范围-散列
范围-列表
列表-范围
列表-散列
列表-列表