[引用分区表]Oracle 11g新特性之引用分区表

        引用分区表是Oracle11g引入的新特性,在特定场合十分好用,解决了“并非所有表都具有您需要根据其进行分区的列”这个问题。
 
       根据Oracle官方文档介绍,引用分区表是通过 PARTITION BY REFERENCE语句来实现,需要指定引用约束的名称,该约束将成为应用到该引用分区表所使用的约束。这个约束必须启用和执行。

   和其他分区表一样,你可以制定对象级别的默认属性,也可以随意在特定分区设置属性,覆盖对象级别的属性。

   下面的sql语句创建了一个范围分区表orders,引用分区子表order_items包含了4个分区,分别是Q1_2005Q2_2005Q3_2005, Q4_2005,每个分区包含的order_items数据都是根据父表关联列的范围分区来存储。

点击(此处)折叠或打开

  1. CREATE TABLE orders
  2.     ( order_id NUMBER(12),
  3.       order_date TIMESTAMP,
  4.       order_mode VARCHAR2(8),
  5.       customer_id NUMBER(6),
  6.       order_status NUMBER(2),
  7.       order_total NUMBER(8,2),
  8.       sales_rep_id NUMBER(6),
  9.       promotion_id NUMBER(6),
  10.       CONSTRAINT orders_pk PRIMARY KEY(order_id)
  11.     )
  12.   PARTITION BY RANGE(order_date)
  13.     ( PARTITION Q1_2005 VALUES LESS THAN (TO_DATE('01-APR-2005','DD-MON-YYYY')),
  14.       PARTITION Q2_2005 VALUES LESS THAN (TO_DATE('01-JUL-2005','DD-MON-YYYY')),
  15.       PARTITION Q3_2005 VALUES LESS THAN (TO_DATE('01-OCT-2005','DD-MON-YYYY')),
  16.       PARTITION Q4_2005 VALUES LESS THAN (TO_DATE('01-JAN-2006','DD-MON-YYYY'))
  17.     );

  18. CREATE TABLE order_items
  19.     ( order_id NUMBER(12) NOT NULL,
  20.       line_item_id NUMBER(3) NOT NULL,
  21.       product_id NUMBER(6) NOT NULL,
  22.       unit_price NUMBER(8,2),
  23.       quantity NUMBER(8),
  24.       CONSTRAINT order_items_fk
  25.       FOREIGN KEY(order_id) REFERENCES orders(order_id)
  26.     )
  27.     PARTITION BY REFERENCE(order_items_fk);
    在上述sql语句中,引用分区子表没有指定分区描述,默认和父表保持一致;如果要指定分区描述,则分区描述的个数必须和父表的分区数保持一致。如果父表是一个复合分区表,则子表的分区和父表的子分区一一对应;否则,子表分区和父表的分区一一对应。

   需要注意的是,在引用分区表中不能指定分区的边界。


       引用分区表的分区可以单独命名,如果没有显式地制定分区名称,则直接继承其关联的父表分区名称,除非父表分区名称和已有名称冲突。这种情况下,系统将自动生成一个分区名称。由于上述sql语句没有指定名称,则子表分区和父表分区的名称应该相同。

点击(此处)折叠或打开

  1. SQL> select table_name,partition_name from user_tab_partitions;

  2. TABLE_NAME PARTITION_NAME
  3. ------------------------------ ------------------------------
  4. ORDER_ITEMS Q4_2005
  5. ORDER_ITEMS Q3_2005
  6. ORDER_ITEMS Q2_2005
  7. ORDER_ITEMS Q1_2005
  8. ORDERS Q4_2005
  9. ORDERS Q3_2005
  10. ORDERS Q2_2005
  11. ORDERS Q1_2005

  12. 8 rows selected.

  13. SQL>

       如果sql语句没有显式指定表空间,则引用分区表的分区将和父表的相关分区放在一起。

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

转载于:http://blog.itpub.net/30162081/viewspace-1577037/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值