oracle分区范围修改与数据迁移处理

背景

由于对应用上线后流量越来越大,原来的按年自动分区性能跟不上,因此决定改成按月自动分区,同时将原有分区数据重新迁移到新的分区

步骤

  • 修改表分区为一个月一个分区
alter table my_table set INTERVAL (NUMTOYMINTERVAL(1, 'month'));
  • 找到原分区将原分区数据按月拆分为新的分区
alter table my_table split PARTITION my_table_001 at (TO_DATE('2023-10', 'SYYYY-MM')) into (partition my_table_0001, partition my_table_001);
alter table my_table split PARTITION my_table_001 at (TO_DATE('2023-11', 'SYYYY-MM')) into (partition my_table_0002, partition my_table_001);
alter table my_table split PARTITION my_table_001 at (TO_DATE('2023-12', 'SYYYY-MM')) into (partition my_table_0003, partition my_table_001);
alter table my_table split PARTITION my_table_001 at (TO_DATE('2024-01', 'SYYYY-MM')) into (partition my_table_0004, partition my_table_001);
  • 执行完成后查看现有分区情况
SELECT * FROM USER_TAB_PARTITIONS WHERE TABLE_NAME = 'MY_TABLE';
  • 删除原有分区
ALTER table my_table DROP PARTITION my_table_001;
  • 查看全部索引
SELECT * from user_indexes WHERE table_name = 'MY_TABLE';
  • 重建主键索引
ALTER index SYS_C0011986 rebuild;
  • 重建全局唯一索引
ALTER index uk_xxx rebuild;
  • 插入数据测试即完成

你可能感兴趣的:(oracle,数据库)