oracle11g-date字段类型的分区表切换为自动分区表

问题描述#

oracle11g存在字段date类型的range分区(按月划分分区表),由于早期是从oracle9i迁移到oracle11g,历史的分区表都是人工新增分区,先要改为自动分区,减少漏加分区导致的异常。

问题解决#

00、查看当前用户下存在的分区表

Copy
#查看当前用户分区表及分区策略 SELECT p.table_name AS 表名, decode(p.partitioning_key_count, 1, '主分区') AS 分区类型, p.partitioning_type AS 分区类型, p.column_name AS 分区键, decode(nvl(q.subpartitioning_key_count, 0), 0, '无子分区', 1, '子分区') AS有无子分区, q.subpartitioning_type AS 子分区类型, q.column_name AS 子分区键 FROM (SELECT a.table_name, a.partitioning_type, b.column_name, a.partitioning_key_count FROM user_part_tables a, user_part_key_columns b WHERE a.table_name = b.NAME AND b.object_type = 'TABLE') p, (SELECT a.table_name, a.subpartitioning_type, b.column_name, a.subpartitioning_key_count FROM user_part_tables a, user_subpart_key_columns b WHERE a.table_name = b.NAME AND a.subpartitioning_key_count <> 0 AND b.object_type = 'TABLE') q WHERE p.table_name = q.table_name(+) ORDER BY 5, 4, 1;

01、查看当前用户下存在的自动分区表

Copy
select distinct(table_name) from user_tab_partitions where interval = 'YES';

存在max分区#

01、查看max分区是否存在数据

Copy
select * from ZS_KKXX_JYLS partition(PART_202202);

02、存在数据则数据备份出来

Copy
create table ZS_KKXX_JYLS_bak_20220122 as select * from ZS_KKXX_JYLS partition(PART_202202);

03、删除max分区

Copy
alter table ZS_KKXX_JYLS drop PARTITION (PART_202202);

04、设置自动月度自动添加分区

Copy
alter table ZS_KKXX_JYLS SET INTERVAL (NUMTOYMINTERVAL(1,'MONTH'));

05、在线重建索引(只有max分区有数才需重建)

Copy
alter index PK_ZS_KKXX_JYLS rebuild online;

06、max分区的数据导入分区表

Copy
insert into ZS_KKXX_JYLS select * from ZS_KKXX_JYLS_bak_20220122;

不存在max分区#

01、设置月度自动添加分区

Copy
alter table ZS_KKXX_JYLS SET INTERVAL (NUMTOYMINTERVAL(1,'MONTH'));
posted @   mvpbang  阅读(352)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· AI与.NET技术实操系列(六):基于图像分类模型对图像进行分类
历史上的今天:
2019-02-26 linux修改系统时间
2017-02-26 Linux安装SQLite轻量级数据库
点击右上角即可分享
微信分享提示
CONTENTS