oracle如何修改视图字段长度类型,Oracle 大表字段类型在线修改问题总结

本文分享了在Oracle环境下,对大表字段进行在线修改的经验,包括使用Oracle的在线重定义功能进行表结构修改,以及在10亿级别数据量下遇到的问题和解决方案。内容涵盖在线重定义的原理、主要功能、支持的数据库版本,以及实施过程中的注意事项,如创建临时表、并行度调整、依赖复制等问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

2月9号的时候分享了篇Oracle针对大表在线修改的脚本,主要是使用Oracle自带的在线重定义功能,对于表结构的修改,非常的方便,强列推荐使用。

脚本下载地址:oracle大表字段类型修改在线重定义脚本.txt

最近在客户现场测试最大的24亿行记录的分区表,整个变更过程花费3个多小时,符合预期。

网上相关的文章比较多,但都只是告诉我们怎么用,对于大表环境下的坑,讲的都比较少,如下是我在一线客户现场测试上10亿的大表字段修改过程中所遇到的问题汇总及规避方法,希望能帮助到大家。

每次看大神的文章第一时间就是看看什么版本、什么环境,心心想自己的环境适用不,废话有点多,直接看配置吧。

CPU:物理4个,每个10核心,共计80个Processor(Intel® Xeon® CPU E7-4820 v3 @ 1.90GHz)

内存:500 GB

OS版本:redhat Linux release 7.5 (Maipo)。

存储:huawei 某型号。

DB版本:Oracle 12c RAC nocdb(12.2.0.1.0)。

一. 简单介绍一下Oracle在线重定义

a7f7b9033d576f1e3e3e63b21d575992.png

1. 在线重定义表是什么

Oracle 支持在线重定义表,也就是说我们可以在修改表结构(DDL)的同时进行相关的DQL、DML操作,使得前端的DML根本感觉不到表结构实际上已经发生了变化,对于用户而言是完全透明的。当然在线重定义期间,前端性能会稍微有所下降。Oracle提供的重定义包dbms_redefinition即是用与完成此操作。其实质是Oracle使用了智能物化视图及物化视图日志的方式。在对象结构重组期间,表现为一个本地对象的复制,重组期间发生的任何变化都会被刷新到最新。

2. 在线重定义表的主要功能,如下:

修改表或簇的存储参数.

为表添加,修改或删除列

为表添加或删除分区,改变分区结构

增加并行查询支持

重建表以减少碎片

将堆表变为索引组织表或相反

普通表转为分区表

分区表转普通表

改变物化视图日志或者Streams Advanced Queuing queue 表结构

将表移动到相同或不同schema下不同的tablespace(如果不要求表始终可用的话,也可以直接使用alter table move 实现)

3. 支持数据库版本

mos上查询到是支持10.2.0.4及更高版本 - Doc ID 1304838.1.

二、实施过程中需要避免的坑

创建临时表 - [仅创建基础表结构和注释]

临时表的表结构即是我们最终要的表结构。创建临时表时只创建基础的表和注释,不要创建索引、主键、及其它约束,针对小表可以使用COP

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值