ITPub博客

首页 > 数据库 > Oracle > 【ORACLE新特性】11G 分区新特性

【ORACLE新特性】11G 分区新特性

原创 Oracle 作者:renjixinchina 时间:2014-03-12 14:41:03 0 删除 编辑

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.      完全组合分区

二维分区模式,支持更多方式


范围-范围

范围-散列

范围-列表

列表-范围

列表-散列

列表-列表

 


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/15747463/viewspace-1108322/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2011-01-30

  • 博文量
    373
  • 访问量
    2063107