关键字

  • exchange partition
  • unused
  • ORA-14097
  • ORA-14323
  • CTAS

需求:添加分区

离线消息表OFFLMG,在原有分区的基础上添加一个分区。

分析:数据量大

1.该表有50张,从OFFLMG_0到OFFLMG_49,数据量比较大,最少的一张有几千万数据,50G左右,最大的一张有几亿数据,超过300G.
2.该表为list分区表,有default分区,且default分区数据量比较大,占全表数据量的95%以上
3.该表在三个月前做了联机重定义,将原来未分区的表做了分区,分区后存量数据放在default分区,新写入的数据都在其他分区中
4.default分区数据现在在业务中基本上不用(业务上离线消息只取7天前的),当前default分区只作为历史数据保存

操作

  • 尝试一:add

直接add分区

alter table OFFLMG_0
add partition P_10
values(10);

执行报错,错误代码ORA-14323:list分区表中有default分区存在情况下不能add分区

  • 尝试二:split

       spilt分区(P_D分区为default分区)

    alter table OFFLMG_0
    split partition P_D
    values (10)
    into (
    partition P_10,partition P_D
    );

执行成功,但是比较慢(17301165条数据,34.79G,耗时162.07秒),如果在生产上这样搞的话,估计投产当天跑一天都跑不完,这是无法接受的情况,只能另寻他路了

  • 尝试三:exchange

       交换分区,创建一张结构相同的表OFFLMG_0_DEFAULT,将default分区交换到新表。

    create table OFFLMG_0_DEFAULT
    tablespace IMLOG
    as (
    select * from OFFLMG_0 where 1=2
    );
    alter table OFFLMG_0
    exchange partition P_D
    with table OFFLMG_0_DEFAULT;

执行报错,错误代码ORA-14097: ALTER TABLE EXCHANGE PARTITION 中的列类型或大小不匹配
这我就不能忍了,CTAS的表竟然说表结构不相同,经过分析,可能这张表维护时间超过了三年,可能之前经过了字段的添加和删除,有一些unused的字段存在
执行查询:

select table_name,column_name,data_type,data_length,column_id
from user_tab_cols
where table_name = 'OFFLMG_0';

果然,有一行记录明显不对

OFFLMG_0    SYS_C00011_15072514:46:10$    VARCHAR2    255    

这个字段SYS_C00011_15072514:46:10$说明在2015年7月25号的时候确实删除了一个字段,只能看到这个字段是VARCHAR2类型的,大小255,不能看到字段名.
怎么办,怎么办,几个人合计了下,要不把新表也加个相同类型的字段,然后给set unused得了,试一试

--建新表前判断有则删除
DROP TABLE OFFLMG_0_DEFAULT CASCADE CONSTRAINTS;
--按照原有表结构创建新表
create table OFFLMG_0_DEFAULT
tablespace IMLOG
as (
select * from  OFFLMG_0 where 1=2);
--添加一个字段,名字随意,用来set unused的
ALTER TABLE OFFLMG_0_DEFAULT
ADD (TEST VARCHAR2(255));
--将这个字段set unused
alter table OFFLMG_0_DEFAULT set unused(TEST);
--交换原表的default分区到新表
alter table OFFLMG_0
exchange partition P_D
with table OFFLMG_0_DEFAULT;
--删除原表default分区
alter table OFFLMG_0
drop partition P_D;
--为原表添加新分区
alter table OFFLMG_0
add partition P_10
values(10);
--为原表添加default分区
alter table OFFLMG_0
add partition P_D
values(default);

执行成功(17301165条数据,34.79G,耗时3毫秒)

Oracle_为分区表添加新分区相关推荐

  1. Ubuntu下添加新分区并设置挂载点

    Ubuntu下添加新分区并设置挂载点 最近在做Android项目,可是解压根文件系统以后,就报警说硬盘不够.当初设置使用的大小为15G.不过扩展分区还是很方便的.当然首先你得设置添加使用的硬盘大小,这 ...

  2. oracle无法分区,oracle已存在的表添加新分区的方法

    现在有一张表如下: create table WRITE_USER ( area_code              VARCHAR2(8), user_no                VARCH ...

  3. Android11.0(R) MTK平台添加新分区

    mtk 平台增加一个新分区test,修改文件列表如下 modified: device/mediatek/mt6765/init.mt6765.rcmodified: device/mediatek/ ...

  4. AndroidQ(10.0) MTK平台添加新分区

    65 平台增加一个新分区,用于保存特殊数据,修改文件列表如下 modified: build/make/core/Makefilemodified: build/make/core/config.mk ...

  5. linux新建挂载目录命令,告诉你Ubuntu添加新分区并设置挂载点的方法及命令

    最近在Ubuntu下做Android项目,可是解压根文件系统以后,就报警说硬盘不够.当初设置使用的大小为15G.不过扩展分区还是很方便的.当然首先你得设置添加使用的硬盘大小,这次我一下提高到了30G, ...

  6. Centos 7 添加新磁盘

    ==========运维之路 环境如下 [root@Centos ~]# cat /etc/redhat-release CentOS Linux release 7.5.1804 (Core) [r ...

  7. vmware添加新硬盘 挂载新硬盘 硬盘扩容

    vmware添加新硬盘 挂载新硬盘 硬盘扩容 平时都用虚拟机做实验,做一些linux方面的开发应用,但是很烦人的是经常遇到预先装好的linux虚拟机的硬盘空间过小 现在好多软件都没法安装了.自己重新装 ...

  8. Mysql分区表概述、分区类型、分区管理

    另有一篇简单易懂的好文章帮助学习 Mysql分区表的原理和优缺点以及注意点 一.分区概述 分区是指根据一定的规则,数据库把一个表分解成多个更小的.更容易管理的部分.分区有利于管理非常大的表. MySQ ...

  9. 计算机里有个不能进入的磁盘分区,新电脑只有一个分区怎么办? 教你们如何不进pe给硬盘创建新分区!...

    很多朋友新电脑刚买回来打开发现明明自己机械硬盘1T或者1T机械加128G固态,但是却只有一个或者两个分区,但是又不会分区 现在教大家如何不用老毛桃大白菜之类的进pe系统里面就能直接创建新分区 1 Wi ...

  10. 计算机只有一块硬盘分区,如果新计算机只有一个分区怎么办?教您如何在不输入pe的情况下为硬盘创建新分区!...

    许多朋友刚买了一台新计算机并打开它,发现他们的机械硬盘1T或1T机械加128G固态硬盘,但是只有一个或两个分区,但是它们不会分区 现在教您如何在不进入pe系统的情况下直接创建新分区,例如旧的毛桃大白菜 ...

最新文章

  1. 2022秋招算法岗卷成人间地狱!高薪惹眼,招录比100:1
  2. linux将字符串转小写_Python教程第10讲:字符串的使用
  3. 大数开方(C++版)
  4. 2015蓝桥杯省赛---java---A---2(星系炸弹)
  5. VUE 解决:Property or method “deleteFun“ is not defined on the instance but referenced during render.
  6. 三个关键词,看懂AI未来趋势丨不仅仅是高薪
  7. 瑞星对Windows7捆绑杀毒软件等消息的回应
  8. 编程细节 —— 按值传递、按引用传递(final、const)
  9. 语音识别asr是什么
  10. ajax同步时,loading加载不显示(谷歌浏览器)
  11. [poj3252]Round Numbers_数位dp
  12. c语言语法——c语言时间类型
  13. 超好用的开源 IP 地址管理系统,告别传统 Excel 统计方式!
  14. viper4android脉冲样本,V4A脉冲反馈样本第一弹 爽爆
  15. linux 压缩文件 zip,linux zip命令压缩zip文件详解
  16. 魔兽争霸3地图加密,支持重制版-魔兽争霸3地图加密实操,魔兽地图加密工具
  17. springboot集成solr实现全局搜索系列
  18. abp 使用mysql_ABP Vnext使用mysql数据库
  19. 小程序记账项目源码-采用云开发
  20. 工程师的基本功是什么?该如何练习?

热门文章

  1. mac mysql read only_mac Read-Only filesystem
  2. DataSet自定义添加table并添加数据
  3. linux分区用来支持虚拟内存,Linux分区方案
  4. 大专php应用开发期末考试,php程序员笔试题及答案1.doc
  5. Mysql将多个查询结果并列显示
  6. tcp程序——回声客户端
  7. matlab条形图颜色矩阵,Matlab条形图 – 根据符号和大小填充不同颜色的条形图
  8. java代码如何降低重复率_JAVA 如何实现大文本去除重复行
  9. 管理新语:年龄经验并不能让一个医生律师厉害,而是他本来就厉害
  10. 同样是百度输入法,定制远没有原版好用