zoukankan      html  css  js  c++  java
  • 吴裕雄--天生自然ORACLE数据库学习笔记:表分区与索引分区

    create table ware_retail_part --创建一个描述商品零售的数据表
    (
      id integer primary key,--销售编号
      retail_date date,--销售日期
      ware_name varchar2(50)--商品名称
    )
    partition by range(retail_date)
    (
      --2011年第一个季度为part_01分区
      partition par_01 values less than(to_date('2011-04-01','yyyy-mm-dd')) tablespace TBSP_1,
      --2011年第二个季度为part_02分区
      partition par_02 values less than(to_date('2011-07-01','yyyy-mm-dd')) tablespace TBSP_1,
      --2011年第三个季度为part_03分区
      partition par_03 values less than(to_date('2011-10-01','yyyy-mm-dd')) tablespace TBSP_2,
      --2011年第四个季度为part_04分区
      partition par_04 values less than(to_date('2012-01-01','yyyy-mm-dd')) tablespace TBSP_2 
    );
    create table ware_retail_part2 --创建一个描述商品零售的数据表
    (
      id integer primary key,--销售编号
      retail_date date,--销售日期
      ware_name varchar2(50)--商品名称
    )
    partition by range(id,retail_date)--按照销售序号和销售日期分区
    (
      --第一个分区part_01
      partition par_01 values less than(10000,to_date('2011-12-01','yyyy-mm-dd')) tablespace TBSP_1,
      --第一个分区part_02
      partition par_02 values less than(20000,to_date('2012-12-01','yyyy-mm-dd')) tablespace TBSP_1,
      --第一个分区part_03
      partition par_03 values less than(maxvalue,maxvalue) tablespace TBSP_2 
    );
    create table ware_retail_part3 --创建一个描述商品零售的数据表
    (
      id integer primary key,--销售编号
      retail_date date,--销售日期
      ware_name varchar2(50)--商品名称
    )
    partition by hash(id)
    (
      partition par_01 tablespace TBSP_1,
      partition par_02 tablespace TBSP_2
    );
    create table person
    (
      id number primary key,
      name varchar2(20),
      sex varchar2(2)
    )
    partition by hash(id)
    partitions 2
    store in(tbsp_1,tbsp_2);
    create table goods
    (
      id number,
      goodname varchar2(50)
    )
    storage(initial 2048k)
    partition by hash(id)
    (
     partition par1 tablespace tbsp_1,
     partition par2 tablespace tbsp_2
    );
    create table clients
    (
      id integer primary key,
      name varchar2(50),
      province varchar2(20)
    )
    partition by list(province)
    (
      partition shandong values('山东省'),
      partition guangdong values('广东省'),
      partition yunnan values('云南省')
    );
     create table person2                     --创建以一个描述个人信息的表
    (
      id number primary key,                --个人的编号
      name varchar2(20),                    --姓名
      sex varchar2(2)                    --性别
    )
    partition by range(id)--以id作为分区键创建范围分区
    subpartition by hash(name)--以name列作为分区键创建hash子分区
    subpartitions 2 store in(tbsp_1,tbsp_2)--hash子分区公有两个,分别存储在两个不同的命名空间中
    (
      partition par1 values less than(5000),--范围分区,id小于5000
      partition par2 values less than(10000),--范围分区,id小于10000
      partition par3 values less than(maxvalue)--范围分区,id不小于10000
    );
    create table saleRecord
    (
     id number primary key, --编号
     goodsname varchar2(50),--商品名称
     saledate date,--销售日期
     quantity number--销售量
    )
    partition by range(saledate)
    interval (numtoyminterval(1,'year'))
    (
      --设置分区键值日期小于2012-01-01
      partition par_fist values less than (to_date('2012-01-01','yyyy-mm-dd'))
    );
    alter table clients
    add partition hebei values('河北省')
    storage(initial 10K next 20k) tablespace tbsp_1
    nologging;
    --创建表和分区
    create table sales--创建一个销售记录表
    (
      id number primary key,--记录编号
      goodsname varchar2(10),--商品名
      saledate date--销售日期
    )
    partition by range(saledate)--按照日期分区
    (
      --第一季度数据
      partition part_sea1 values less than(to_date('2011-04-01','yyyy-mm-dd')) tablespace tbsp_1,
      --第二季度数据
      partition part_sea2 values less than(to_date('2011-07-01','yyyy-mm-dd')) tablespace tbsp_2,
      --第三季度数据
      partition part_sea3 values less than(to_date('2011-10-01','yyyy-mm-dd')) tablespace tbsp_1,
      --第四季度数据
      partition part_sea4 values less than(to_date('2012-01-01','yyyy-mm-dd')) tablespace tbsp_2
    );
    
    --创建局部索引
    create index index_3_4 on sales(saledate)
    local(
    partition part_seal tablespace tbsp_1,
    partition part_sea2 tablespace tbsp_2,
    partition part_sea3 tablespace tbsp_1,
    partition part_sea4 tablespace tbsp_2
    );
    
    --并入分区
    alter table sales merge partitions part_sea3,part_sea4 into partition part_sea4;
    
    --重建局部索引
    alter table sales modify partition part_sea4 rebuild unusable local indexes;
    --创建3个表空间
    
    create tablespace ts_1 datafile 'D:OracleFilesOracleData	s1.dbf'
    size 10m
    extent management local autoallocate;
    create tablespace ts_2 datafile 'D:OracleFilesOracleData	s2.dbf'
    size 10m
    extent management local autoallocate;
    create tablespace ts_3 datafile 'D:OracleFilesOracleData	s3.dbf'
    size 10m
    extent management local autoallocate;
    
    
    --创建分区表
    create table studentgrade
    (
      id number primary key,--记录id
      name varchar2(10),--学生名称
      subject varchar2(10),--学科
      grade number --成绩
    )
    partition by range(grade)
    (
      --小于60分,不及格
      partition par_nopass values less than(60) tablespace ts_1,
      --小于70分,及格
      partition par_pass values less than(70) tablespace ts_2,
      --大于或等于70分,优秀
      partition par_good values less than(maxvalue) tablespace ts_3
    );
    
    
    --创建本地索引分区
    create index grade_index on studentgrade(grade)
    local--根据表分区创建本地索引分区
    (
      partition p1 tablespace ts_1,
      partition p2 tablespace ts_2,
      partition p3 tablespace ts_3
    );
    
    --查询所创建的索引分区信息
    select partition_name,tablespace_name from dba_ind_partitions where index_name = 'GRADE_INDEX';
    create index index_SalePrice on Books(SalePrice)
    global partition by range(SalePrice)
    (
      partition p1 values less than (30),
      partition p2 values less than (50),
      partition p3 values less than (maxvalue)
    );
    create index index_ISBN on books(ISBN)
    global partition by hash(ISBN);
    alter index index_saleprice rename partition p3 to p_new;
     create table Books_Sale                        --图书销售表
    (
      id integer primary key,                --编号
      quantity number,                    --销售数量
      book_name varchar2(50),                --名称
      publisher varchar2(50)                                --出版社
    )
    partition by list(publisher)                    --以publisher 列为分区键创建列表分区
    (
      partition A values('A省出版社'),            --A省份
      partition B values('B省出版社'),         --B省份
      partition C values('C省出版社')             --C省份
    );
    create index grade_index on Books_Sale(publisher)
    local        --根据表分区创建本地索引分区
    (
      partition p1 tablespace users,
      partition p2 tablespace users,
      partition p3 tablespace users
    );
  • 相关阅读:
    幸福必读
    JAVA程序员之路
    编写数据库操作类,使ASP.NET 中的数据库操作变得简单
    Duwamish 7.0 系列分析文章
    Visual Studio .NET加密技术剖析系列课程
    做为一个Tester,你为Testing付出了多少?
    程序员分成几种不同的境界
    深度探索C++对象模型(2).txt
    Eclipse快速上手指南之使用JUnit
    Eclipse使用技巧
  • 原文地址:https://www.cnblogs.com/tszr/p/12206790.html
Copyright © 2011-2022 走看看