暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

oracle分区表维护笔记

原创 数据库管理员陆美芳 2023-12-01
541

时间

2023-12-01

问题描述

多个集团客户项目实施运维组同事集体反馈,服务报错了,报错日志包含如下内容:
0RA-14400: 插入的分区关键字未映射到任何分区

第一反应就是:应该是分区过期,于是指导运维进行如下步骤排查,确实如此!

查询哪些表做了分区

SELECT * FROM USER_TAB_PARTITIONS

查出所有做了分区的表名称

SELECT DISTINCT TABLE_NAME FROM USER_TAB_PARTITIONS

查看分区表名称及其对应表空间名称

SELECT DISTINCT TABLE_NAME,TABLESPACE_NAME FROM USER_TAB_PARTITIONS

查询指定表是否建了分区

SELECT * FROM USER_TAB_PARTITIONS WHERE TABLE_NAME=‘KPGL_XXFP’

查询指定表分区情况

SELECT * FROM USER_TAB_PARTITIONS WHERE TABLE_NAME=‘KPGL_XXFP’ ORDER BY partition_name DESC
以此判断是否是手动分区,确认是否需要扩展分区,做到这一步,确认了最大分区是p2312,less than 2023-12-01,确认是分区不够,需要扩展分区。
同时,这个查询里面,能拿到 tablespace_name,在下面的扩建分区脚本需要用到。

扩建分区脚本

ALTER TABLE “表名称” ADD PARTITION “分区名称” VALUES LESS THAN (TO_DATE(‘2024-02-01 00:00:00’, ‘SYYYY-MM-DD HH24:MI:SS’, ‘NLS_CALENDAR=GREGORIAN’)) TABLESPACE “表空间名称”;
其中把中文的地方替换成自己真实环境的对应名称,就可以为表添加一个分区,按照日期分区,此分区存储的是2024年1月的数据!

删除指定分区

ALTER TABLE “表名称” DROP PARTITION “分区名称”;

查询分区数据

select * from “表名称” PARTITION(“分区名称”)
通常要删除分区之前,要查看分区是否已经有数据,没有数据才可以删除分区。

最后修改时间:2023-12-04 11:22:48
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

文章被以下合辑收录

评论