重庆思庄Oracle、Redhat认证学习论坛

标题: oracle 11g 分区之七:system分区 [打印本页]

作者: 郑全    时间: 2018-9-7 17:34
标题: oracle 11g 分区之七:system分区
以前的分区表,需要指定一个或多个分区字段,并根据这个分区字段的值,按照一定的算法(RANGE、HASH和LIST)来决定一条记录属于那个分区。
  从11g开始,Oracle允许用户不指定分区列,完全根据程序来控制数据存储在那个分区中。这就是11g提供的系统分区功能。
  在以前,确定了分区列和分区方式,那么一条数据属于哪个分区也就被确定下来。而对于系统分区而言,分区是分区,数据是数据,二者没有对应的关系。
  数据可以被放在任意一个分区中,这不是由数据本身决定的,而是应用程序在插入时确定的。
  示例:
  CREATE TABLE T_SYSTEM
    (ID NUMBER,
     NAME VARCHAR2(30)
     )
    PARTITION BY SYSTEM
    (PARTITION P1,
     PARTITION P2,
     PARTITION P3,
     PARTITION P4
     );
   这里需要注意的是在插入时必须指定分区
   SQL> INSERT INTO T_SYSTEM VALUES (1, 'ABC');

   INSERT INTO T_SYSTEM VALUES (1, 'ABC')

   ORA-14701: 对于按“系统”方法进行分区的表, 必须对 DML 使用分区扩展名或绑定变量
   SQL>  INSERT INTO T_SYSTEM PARTITION (P1) VALUES (1, 'ABC');

   1 row inserted

   SQL>  INSERT INTO T_SYSTEM PARTITION (P2) VALUES (1, 'ABC');

   1 row inserted



作者: 郑全    时间: 2019-4-26 11:53
个人感觉,这个特性对于管理上的优势可能比较大。比如,在应用中,我们可以控制数据插入到哪个分区中,如果是OLTP系统,就是将负载集中在某个分区上。其他分区就可以进行日常的运维工作。

那么,这个特点在没有System Partition的时候,也是可以实现,就是通过额外的数据列中定义存储位置。这种方法的缺点是技术部署细节传导入业务模型层面。而System Partition就是实现了这个功能




欢迎光临 重庆思庄Oracle、Redhat认证学习论坛 (http://bbs.cqsztech.com/) Powered by Discuz! X3.2