oracle11g根据date字段类型的分区表转换为自动分区表
oracle11g存在字段date类型的range分区(按月划分分区表),由于早期是从oracle9i迁移到oracle11g,历史的分区表都是人工新增分区,先要改为自动分区,减少漏加分区导致的异常。
1.查看当前用户下存在的分区表
1 | //查看当前用户分区表及分区策略 |
2.查看当前用户下存在的自动分区表
select distinct(table_name) from user_tab_partitions where interval = 'YES';
3.存在max分区
3.1查看max分区是否存在数据
select * from ZS_KKXX_JYLS partition(PART_202202);
3.2存在数据则数据备份出来
create table ZS_KKXX_JYLS_bak_20220122 as select * from ZS_KKXX_JYLS partition(PART_202202);
3.3删除max分区
alter table ZS_KKXX_JYLS drop PARTITION (PART_202202);
3.4设置自动月度自动添加分区
alter table ZS_KKXX_JYLS SET INTERVAL (NUMTOYMINTERVAL(1,'MONTH'));
3.5在线重建索引(只有max分区有数才需重建)
alter index PK_ZS_KKXX_JYLS rebuild online;
3.6max分区的数据导入分区表
insert into ZS_KKXX_JYLS select * from ZS_KKXX_JYLS_bak_20220122;
4.不存在max分区
4.1设置月度自动添加分区
alter table ZS_KKXX_JYLS SET INTERVAL (NUMTOYMINTERVAL(1,'MONTH'));