Loading [MathJax]/jax/input/TeX/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >91-oracle普通表改分区表的几种方法

91-oracle普通表改分区表的几种方法

作者头像
老虎刘
发布于 2022-06-22 10:31:37
发布于 2022-06-22 10:31:37
2.7K0
举报

在对很多客户的oracle数据库做优化的时候发现, 很多系统都有一些大表没有做分区, 导致性能不佳和维护不便.

下面介绍4种普通表改分区表的方法, 供参考:

方法1:

新建分区表, 然后insert select; 或者在创建新分区表的同时插入(CTAS ,create table as select). 完成后做两次rename table操作.

方法2:

在线重定义, 使用DBMS_REDEFINITION, 步骤有点复杂 ,网上有很多介绍该方法的文章, 可以百度一下.

方法3:

创建只有一个分区的分区表, 用exchange partition将原表变成分区表后,再split partition.

方法4:

适用12.2+版本, 可以直接通过alter table xxx modify 命令, 将表直接改成分区表, 支持online不停业务.

推荐使用方法3和4, 符合版本要求就用4. 其他几个方法版本8.x以上都支持.

上面只是简单介绍了方法, 具体还有很多细节, 包括global index/local index的选择, 如何用最短时间完成,减少对业务的影响等. 多测试,多比较,实践出真知.

另外, 分区字段和分区类型的选择, 也是非常重要的, 需要结合业务好好研究再做决定. oracle的分区是一个很好的功能, 以后有机会可以作为一个培训技术专题给大家分享.

如果大家还有更好的方法, 请在留言区留下您的建议, 多谢!

大表操作有风险, 祝一帆风顺!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-11-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 老虎刘谈oracle性能优化 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Oracle在线重定义DBMS_REDEFINITION 普通表—>分区表
实验环境:RHEL 6.4 + Oracle 11.2.0.3 实验:在线重定义 普通表 为 分区表,包括主键对应的索引都改造为分区索引. 1,构造普通表t_objects
Alfred Zhao
2019/05/24
9230
实战篇:Oracle分区表必知必会【在线重定义】
使用在线重定义的方式进行分区表的转换,优势在于可以在线进行,流程简单,可以快速进行转换。
Lucifer三思而后行
2021/08/17
6000
实战篇:Oracle分区表必知必会【在线重定义】
在线重定义“巧改”分区表
作者介绍: 曾令军,云和恩墨技术专家,2009年开始接触ORACLE数据库,8年数据库运维经验。思维敏捷,擅长于数据库开发、解决棘手的数据库故障和性能问题。服务于公司华南区多个客户,曾参与过国内多家股份制银行、城市商业银行的核心业务系统、数据仓库的部署建设和生产运维工作,在数据库故障诊断、运维监控、性能优化方面积累了丰富的经验。 什么是在线重定义 要了解什么是在线重定义技术,我想从表分区开始说起。在生产系统运维过程中,经常遇到的一个需求是如何把一个数据量非常大的普通表改造成分区表。分区最早在oracle8.
数据和云
2018/03/07
1K0
在线重定义“巧改”分区表
分而治之:从多列到自动Oracle 12.2 分区新特性抢先一览
何剑敏 Oracle ACS华南区售后团队,首席技术工程师 曾供职于中国联通信息计费部、卓望数码、IBM。现供职于Oracle ACS华南区售后团队,首席技术工程师。多年从事一线的数据库运维工作,有丰富项目经验、维护经验和调优经验,专注于数据库的整体运维。 编者:Oracle的分区技术一直是对数据分而治之的重要手段,在12.2中,更加由这一技术演化出Sharding的新特性,那么回归分区技术本身,我们来看看在这一版本中,又有哪些分区功能上的增强。 Oracle database 12.2 有不少分区
数据和云
2018/03/06
7650
分而治之:从多列到自动Oracle 12.2 分区新特性抢先一览
使用DBMS_REDEFINITION在线切换普通表到分区表
      随着数据库数据量的不断增长,有些表需要由普通的堆表转换为分区表的模式。有几种不同的方法来对此进行操作,诸如导出表数据,然后创建分区表再导入数据到分区表;使用EXCHANGE PARTITION方式来转换为分区表以及使用DBMS_REDEFINITION来在线重定义分区表。本文描述的是使用DBMS_REDEFINITION来实现,下面是具体的操作示例。
Leshami
2018/08/13
4380
【DB笔试面试474】普通表转换为分区表有哪些办法?
(2)子查询插入方法(Insert With a Subquery Method)
AiDBA宝典
2019/09/30
7370
Oracle普通表按月转分区表,通过PLSQL包一键生成分区表
在运维开发过程中,发现有部分应用厂商在建表之初并未考虑到数据体量的问题,导致很多大表都没有建成分区表。在系统运行过程中,这些表的数据量一直在增大,当达到一定体量时,我们就需要考虑对其进行分区表转换,以提高数据库的性能。那么,如何操作呢?
Lucifer三思而后行
2021/08/17
1.5K0
Oracle普通表按月转分区表,通过PLSQL包一键生成分区表
实战篇:Oracle分区表之在线重定义
安装测试环境可以使用博主编写的 Oracle 一键安装脚本,同时支持单机和 RAC 集群模式!
Lucifer三思而后行
2022/01/08
1.6K0
实战篇:Oracle分区表之在线重定义
使用exchange方式切换普通表到分区表
      随着数据库数据量的不断增长,有些表需要由普通的堆表转换为分区表的模式。有几种不同的方法来对此进行操作,诸如导出表数据,然后创建分区表再导入数据到分区表;使用EXCHANGE PARTITION方式来转换为分区表以及使用DBMS_REDEFINITION来在线重定义分区表。本文描述的是使用EXCHANGE PARTITION方式来实现,下面是具体的操作示例。
Leshami
2018/08/13
6350
用DBMS_REDEFINITION将普通表转换为分区表
这些方案的思路都是创建一个新的分区表,然后把旧表的数据转移到新表上面,接着转移相应的依赖关系,最后进行表的重命名,把新表和旧表rename。与前三种方案相比,DBMS_REDEFINITION几乎不影响旧表的正常使用,因此也逐渐成为目前普遍使用的转换分区表的方案。
星哥玩云
2022/08/18
5840
ORACLE分区表转换之在线重定义(DBMS_REDEFINITION)
参考MOS文档:How To Partition Existing Table Using DBMS_REDEFINITION (Doc ID 472449.1)  
Lucifer三思而后行
2021/08/17
2K0
关于分区表的在线重定义(r5笔记第98天)
目前项目中有一个问题,存在一个分区表,因为分区规则的问题,使得分区表中的数据分布很不均匀,数据都分区在了默认的maxvalue分区上。现在需要重新划分分区。从常规的角度来看,这中重新分区的问题一般有以下几个步骤。 1.数据备份,采用exp/expdp或者ctas的方式 2.truncate 分区表的数据 3.删除多余的分区,只保留maxvalue的分区 4.使用split partition进行分区 5.使用开始的数据备份,把数据导入。 对于这个问题,如果采用这种方式,势必会需要一定的downtime,如何
jeanron100
2018/03/16
5880
在线重定义(online redefinition)真的在线吗?
最近用Online Redefinition解决了一批普通大表(超千万级别)转换成分区表,后期方便做数据裁剪(truncate partition),Online Redefinition的优点是支持在线操作,但在操作过程中还是发生了一些生产操作的事故,分享出来让大家避坑。
布衣530
2025/01/17
1740
在线重定义(online redefinition)真的在线吗?
使用在线重定义重构亿级分区表(r10笔记第34天)
在我的印象中,一直以来都会收到一封报警邮件,之前分析过,排查过,最后发现是一个遗留问题,协调开发同学,停业务维护还是有一些难度,最后不了了之了,在今天又突然想起了这件事情,觉得还是需要做点什么。 报警邮件类似下面的形式: ZABBIX-监控系统: ------------------------------------ 报警内容: Disk I/O is overloaded on 10.127.2.134_xx机房_xxxx ------------------------------------ 报
jeanron100
2018/03/19
9300
使用在线重定义重构亿级分区表(r10笔记第34天)
Oracle普通表->分区表转换(9亿数据量)
某普通表T,由于前期设计不当没有分区,如今几年来的数据量已达9亿+, 空间占用大约350G,在线重定义为分区表不现实,故采取申请时间窗口停此表应用,改造为分区表。
Alfred Zhao
2019/05/24
1.9K0
非分区表转换成分区表以及注意事项
有时候刚开始设计的时候没考虑到数据归档。数据归档不是简单的导出delete。因为一般我们的数据库都是delete不释放空间。而我们一般数据库遇到空间不足,就不得不面对这个问题。当然也可以做碎片整理的空间回收。我不太喜欢这样,尤其大的表的时候。MySQL一旦超过100G的,在线环境我都不敢去做。Oracle的在线回收我做过20T的表,碎片800G,回收了一次做了55个小时(不停机)
PHP开发工程师
2022/07/07
5230
数据库 分区表详解
1、数据库中某个表中的数据很多。很多是什么概念?一万条?两万条?还是十万条、一百万条?这个,我觉得是仁者见仁、智者见智的问题。当然数据表中的数据多到查询时明显感觉到数据很慢了,那么,你就可以考虑使用分区表了。如果非要我说一个数值的话,我认为是100万条。
全栈程序员站长
2022/09/06
1.9K0
数据库 分区表详解
Oracle 12.2 新特性:在线的修改数据表为分区表
众所周知,分区技术是Oracle应用最为广泛的一个选件,并且历史悠久,然而在过去的版本中,如果我们要将一个现有的数据表转换为分区表,则是相当复杂的一个过程,而在 12.2 版本中,这个过程被简化为一个在线的操作。 请看以下Demo SQL语句: CREATE TABLE sales ( order_num NUMBER, order_name VARCHAR2(128), region VARCHAR2(10)); insert into sales (1,'YHEM','BEI
数据和云
2018/03/06
1.3K0
Oracle 12.2 新特性:在线的修改数据表为分区表
【DB笔试面试470】分区表有什么优点?分区表有哪几类?如何选择用哪种类型的分区表?
当表中的数据量不断增大时,查询数据的速度就会变慢,应用程序的性能就会下降,这时就应该考虑对表进行分区。当对表进行分区后,在逻辑上,表仍然是一张完整的表,只是将表中的数据在物理上可能存放到多个表空间或物理文件上。当查询数据时,不至于每次都扫描整张表。Oracle可以将大表或索引分成若干个更小、更方便管理的部分,每一部分称为一个分区,这样的表称为分区表。SQL语句使用分区表比全表能提供更好的数据处理与访问的性能。即使某些分区不可用,其它分区仍然可用,这叫做分区独立性。
AiDBA宝典
2019/09/30
1.5K0
104-oracle大表删除重复记录的几种方法
如果是小表,随便怎么折腾都行; 如果是大表(至少1千万条记录以上,或者占用10G以上空间), 我们可能需要想办法加快这个速度 , 这时可以参考下面方法:
老虎刘
2023/09/01
8940
104-oracle大表删除重复记录的几种方法
推荐阅读
相关推荐
Oracle在线重定义DBMS_REDEFINITION 普通表—>分区表
更多 >
交个朋友
加入[数据] 腾讯云技术交流站
获取数据实战干货 共享技术经验心得
加入数据技术工作实战群
获取实战干货 交流技术经验
加入[数据库] 腾讯云官方技术交流站
数据库问题秒解答 分享实践经验
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档