吴裕雄--天生自然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
);
原文地址:https://www.cnblogs.com/tszr/p/12206790.html