Sakura樱花雪

oracke数据库分区新增

紫陌红尘·2020-02-10 13:50·204 次阅读

oracke数据库分区新增

1、发现一些过程执行报错,报错原因是‘ora-14400插入的分区关键字未映射到任何分区’,原来是2020年库表的时间子分区未扩展;

2、扩展子分区的语句是

ALTER TABLE 表名 MODIFY PARTITION 分区名 ADD SUBPARTITION  子分区名  VALUES (分区字段值) tablespace 表空间名;

3、批量扩展子分区,执行以下语句可自动生成扩展脚本:

复制代码
SELECT DISTINCT 'ALTER TABLE ' || A.table_name || ' MODIFY PARTITION ' ||
                A.partition_name || ' ADD SUBPARTITION ' ||
                REPLACE(A.subpartition_name, '2019', '2020') || ' values (' ||
                replace(REPLACE(A.subpartition_name,
                                A.partition_name || '_M',
                                ''),
                        '2019',
                        '2020') || ') tablespace ' || A.tablespace_name || ';' sql
  FROM USER_TAB_SUBPARTITIONS A
 WHERE A.subpartition_name LIKE '%2019%'
   AND A.table_name NOT LIKE 'BIN$%'
   AND EXISTS (SELECT 1
          FROM USER_PART_TABLES B
         WHERE B.table_name = A.table_name
           AND B.subpartitioning_type = 'LIST')
 order by sql;

SELECT DISTINCT 'ALTER TABLE ' || A.table_name || ' MODIFY PARTITION ' ||
                A.partition_name || ' ADD SUBPARTITION ' ||
                REPLACE(A.subpartition_name, '2019', '2020') ||
                ' values less than (to_date(''' ||
                to_char(add_months(to_date(replace(REPLACE(A.subpartition_name,
                                                           A.partition_name || '_M',
                                                           ''),
                                                   '2019',
                                                   '2020'),
                                           'yyyymm'),
                                   1),
                        'yyyy-mm-dd') || ''',''yyyy-mm-dd'')) tablespace ' ||
                A.tablespace_name || ';' sql
  FROM USER_TAB_SUBPARTITIONS A
 WHERE A.subpartition_name LIKE '%2019%'
   AND A.table_name NOT LIKE 'BIN$%'
   AND EXISTS (SELECT 1
          FROM USER_PART_TABLES B
         WHERE B.table_name = A.table_name
           AND B.subpartitioning_type = 'RANGE')
 order by sql;
复制代码
posted @   紫陌红尘丶  阅读(204)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
点击右上角即可分享
微信分享提示