-----添加表分区所需要的表空间 ,未设置自动扩展
create tablespace PERSONNEL_2010 datafile 'C:\app\Administrator\oradata\orcl\bfq_PERSONNEL_2010.dbf' size 50M;
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;