IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

标签:在线重定义

共 2 篇相关文章

IT 累计浏览 3,806

使用ORACLE在线重定义将普通表改为分区表

这篇讲的是一个真实的运维案例:一张按全宗号分了77个分区的生产大表,在开发人员多次执行 `ALTER TABLE RENAME` 和 `CREATE TABLE AS SELECT`(CTAS)操作后,悄然退化成了普通堆表,导致查询性能显著下降。根源就在于CTAS只会复制数据和基础结构,却丢掉了原有的分区定义。 对于这种7x24不间断服务的关键业务表,想改回分区结构且不能停机,作者给出了利用Oracle 10g推出的在线重定义(DBMS_REDEFINITION)功能的标准解法。文章在一个OEL 5.4 + Oracle 10.2.0.1的虚拟机环境中,一步步演示了从创建测试表、检查重定义可行性,到执行重定义和最终验证的完整流程。这种操作风险高、步骤多,一个环节出错就可能影响线上服务。 这篇文章的价值不仅在于展示了一个具体的功能用法,更在于它揭示了CTAS这个看似无害的常用操作在特定场景下的隐形陷阱。对于负责数据库维护和性能优化的工程师来说,这个案例提供了处理“结构意外变更”的一个清晰思路和可复现的操作模板。

IT 累计浏览 2,234

利用DBMS_REDEFINITION在线重定义表

这篇讲的是如何在不停机、不中断业务的情况下给数据库表“动手术”。对于那些7×24小时运行的核心业务系统,对一张正在被频繁增删改查的表进行结构修改(比如加列、改数据类型)堪称噩梦,传统的做法往往需要停机维护,造成业务中断。 作者从这个常见的痛点出发,介绍了Oracle从9i版本就提供的一个强大工具——`DBMS_REDEFINITION`包。它的核心思路是“暗度陈仓”:先在后台创建一个与原始表结构一致的“影子表”,在此期间允许业务正常读写原始表。等到“影子表”准备就绪,再通过该包快速将两者交换,并同步期间产生的差异数据。整个过程实现了在线重定义,业务几乎感知不到,巧妙地解决了结构变更与业务连续性之间的矛盾。对于需要高可用保障的DBA和开发来说,这是一个必须掌握的运维技巧。