侧边栏壁纸
  • 累计撰写 85 篇文章
  • 累计创建 39 个标签
  • 累计收到 9 条评论

目 录CONTENT

文章目录

Oracle 创建表分区

散漫的老何
2020-05-19 / 0 评论 / 0 点赞 / 1,406 阅读 / 4,368 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2021-12-01,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

添加表分区所需要的表空间 ,未设置自动扩展

create tablespace PERSONNEL_2011 datafile 'C:\app\Administrator\oradata\orcl\bfq_PERSONNEL_2011.dbf' size 50M;
create tablespace PERSONNEL_2012 datafile 'C:\app\Administrator\oradata\orcl\bfq_PERSONNEL_2012.dbf' size 50M;
create tablespace PERSONNEL_2013 datafile 'C:\app\Administrator\oradata\orcl\bfq_PERSONNEL_2013.dbf' size 50M;
create tablespace PERSONNEL_2014 datafile 'C:\app\Administrator\oradata\orcl\bfq_PERSONNEL_2014.dbf' size 50M;
create tablespace PERSONNEL_2015 datafile 'C:\app\Administrator\oradata\orcl\bfq_PERSONNEL_2015.dbf' size 50M;
create tablespace PERSONNEL_2016 datafile 'C:\app\Administrator\oradata\orcl\bfq_PERSONNEL_2016.dbf' size 50M;
create tablespace PERSONNEL_2017 datafile 'C:\app\Administrator\oradata\orcl\bfq_PERSONNEL_2017.dbf' size 50M;
create tablespace PERSONNEL_2018 datafile 'C:\app\Administrator\oradata\orcl\bfq_PERSONNEL_2018.dbf' size 50M;
create tablespace PERSONNEL_2019 datafile 'C:\app\Administrator\oradata\orcl\bfq_PERSONNEL_2019.dbf' size 50M;
create tablespace PERSONNEL_2020 datafile 'C:\app\Administrator\oradata\orcl\bfq_PERSONNEL_2020.dbf' size 50M;

创建表sql与PERSONNEL结构一致

create table PERSONNEL_FQB
(
  rybh     VARCHAR2(2000),
  bjzdrybh VARCHAR2(2000),
  bkjb     VARCHAR2(2000),
  ryzlx    VARCHAR2(2000),
  sfzh     VARCHAR2(2000),
  xm       VARCHAR2(2000),
  xmpy     VARCHAR2(2000),
  wwxm     VARCHAR2(2000),
  qtzjlx   VARCHAR2(2000),
  qtzjlxhm VARCHAR2(2000),
  csrq     DATE,
  xb       VARCHAR2(2000),
  xjzdqh   VARCHAR2(2000),
  zhxz     VARCHAR2(2000),
  hjsf     VARCHAR2(2000),
  hjxs     VARCHAR2(2000),
  hjxz     VARCHAR2(2000),
  ablx     VARCHAR2(2000),
  abms     VARCHAR2(2000),
  bkyy     VARCHAR2(2000),
  spfyj    VARCHAR2(2000),
  xjz      VARCHAR2(2000),
  zp       VARCHAR2(2000),
  zzdw     VARCHAR2(2000),
  bkdw     VARCHAR2(2000),
  bkmjjh   VARCHAR2(2000),
  bkmjxm   VARCHAR2(2000),
  lxdhgh   VARCHAR2(2000),
  lxdhsj   VARCHAR2(2000),
  lrmjdw   VARCHAR2(2000),
  lrmjjh   VARCHAR2(2000),
  lrmjxm   VARCHAR2(2000),
  bksx     VARCHAR2(2000),
  bkzt     VARCHAR2(2000),
  sjly     VARCHAR2(2000),
  zdrylbbj VARCHAR2(2000),
  rksj     DATE default sysdate, --设置入库时间默认值为sysdate时间
  zhxgsj   VARCHAR2(2000),
  zxlb     VARCHAR2(2000),
  zxlblog  VARCHAR2(2000),
  sfzxxd   VARCHAR2(2000),
  zxbkjb   VARCHAR2(2000),
  sfbdry   VARCHAR2(2000),
  czryzlb  VARCHAR2(2000),
  exp1     VARCHAR2(2000),
  exp2     VARCHAR2(2000),
  exp3     VARCHAR2(2000)
)
--指定表默认表空间
tablespace BFQ_DATA
  pctfree 10
  initrans 1
  maxtrans 255
  storage
  (
    initial 64K
    next 1M
    minextents 1
    maxextents unlimited
  )
--将入库时间字段设置为表分区的条件
  partition by range(rksj)
  (
--创建分区表空间
--注意需要先创建好所需要表空间
  partition PERSONNEL_rksj_2010 values less than (TO_DATE('2010-01-01','yyyy-mm-dd')) tablespace PERSONNEL_2010,
  partition PERSONNEL_rksj_2011 values less than (TO_DATE('2011-01-01','yyyy-mm-dd')) tablespace PERSONNEL_2011,
  partition PERSONNEL_rksj_2012 values less than (TO_DATE('2012-01-01','yyyy-mm-dd')) tablespace PERSONNEL_2012,
  partition PERSONNEL_rksj_2013 values less than (TO_DATE('2013-01-01','yyyy-mm-dd')) tablespace PERSONNEL_2013,
  partition PERSONNEL_rksj_2014 values less than (TO_DATE('2014-01-01','yyyy-mm-dd')) tablespace PERSONNEL_2014,
  partition PERSONNEL_rksj_2015 values less than (TO_DATE('2015-01-01','yyyy-mm-dd')) tablespace PERSONNEL_2015,
  partition PERSONNEL_rksj_2016 values less than (TO_DATE('2016-01-01','yyyy-mm-dd')) tablespace PERSONNEL_2016,
  partition PERSONNEL_rksj_2017 values less than (TO_DATE('2017-01-01','yyyy-mm-dd')) tablespace PERSONNEL_2017,
  partition PERSONNEL_rksj_2018 values less than (TO_DATE('2018-01-01','yyyy-mm-dd')) tablespace PERSONNEL_2018,
  partition PERSONNEL_rksj_2019 values less than (TO_DATE('2019-01-01','yyyy-mm-dd')) tablespace PERSONNEL_2019,
  partition PERSONNEL_rksj_2020 values less than (TO_DATE('2020-01-01','yyyy-mm-dd')) tablespace PERSONNEL_2020
  );

将数据插入到分区表中
insert into PERSONNEL_FQB select * from PERSONNEL;
commit;

--注意,新建的数据表,统计信息未必收集,可通过分析表进行收集。
analyze table PERSONNEL_fqb compute statistics;

查询该表数据在各个表空间中的分布情况
select PARTITION_NAME, NUM_ROWS, TABLESPACE_NAME, SEGMENT_CREATED
  from dba_tab_partitions
 where TABLE_NAME = upper('PERSONNEL_fqb');
查询该表中有多少个子表空间
select TABLE_NAME, PARTITIONING_TYPE, PARTITION_COUNT, STATUS
  from dba_part_tables
 where TABLE_NAME = upper('PERSONNEL_fqb');
查询单独分区的数据信息。
select * from PERSONNEL_fqb partition(PERSONNEL_rksj_2017);
创建新增表空间sql
create tablespace PERSONNEL_2021 datafile 'C:\app\Administrator\oradata\orcl\bfq_PERSONNEL_2021.dbf' size 50M;
表分区添加,添加表分区需要先创建PERSONNEL_RKSJ_2021表空间
alter table PERSONNEL_FQB
  add partition PERSONNEL_RKSJ_2021 values less than (TO_DATE('2021-01-01 00:00:00', 'YYYY-MM-DD HH24:MI:SS'))
  tablespace PERSONNEL_2021;
0
广告 广告

评论区