Oracle 11G DBMS_REDEFINITION修改表数据类型
发表于:2025-11-12 作者:千家信息网编辑
千家信息网最后更新 2025年11月12日,11G DBMS_REDEFINITION修改表数据类型1.获取源表结构信息SYS@honor1 > SET LONG 999999SYS@honor1 > SELECT DBMS_METADATA.
千家信息网最后更新 2025年11月12日Oracle 11G DBMS_REDEFINITION修改表数据类型1.获取源表结构信息
2.验证是否可以在线重定义
3.创建中间表,修改需要修改的列数据类型
4.开始在线重定义
5.同步中间数据,减少finish_redef_table时间
6.复制相关约束,依赖对象
7.完成在线重定义
11G DBMS_REDEFINITION修改表数据类型
1.获取源表结构信息
SYS@honor1 > SET LONG 999999SYS@honor1 > SELECT DBMS_METADATA.GET_DDL('TABLE','TEST_REDE','HR') FROM DUAL;CREATE TABLE "HR"."TEST_REDE" ( "OWNER" VARCHAR2(30), "OBJECT_NAME" VARCHAR2(128), "SUBOBJECT_NAME" VARCHAR2(30), "OBJECT_ID" VARCHAR2(20), "DATA_OBJECT_ID" NUMBER, "OBJECT_TYPE" VARCHAR2(19), "CREATED" DATE, "LAST_DDL_TIME" DATE, "TIMESTAMP" VARCHAR2(19), "STATUS" VARCHAR2(7), "TEMPORARY" VARCHAR2(1), "GENERATED" VARCHAR2(1), "SECONDARY" VARCHAR2(1), "NAMESPACE" NUMBER, "EDITION_NAME" VARCHAR2(30) ) TABLESPACE "USERS";2.验证是否可以在线重定义
# 由于表没有主键,所以只能使用ROWID,如果表有主键,可以删掉CONS_USE_ROWID,默认使用PKBEGINDBMS_REDEFINITION.CAN_REDEF_TABLE('HR','TEST_REDE',DBMS_REDEFINITION.CONS_USE_ROWID);END;/3.创建中间表,修改需要修改的列数据类型
CREATE TABLE "HR"."TEST_REDE_INTER"( "OWNER" VARCHAR2(30), "OBJECT_NAME" VARCHAR2(128), "SUBOBJECT_NAME" VARCHAR2(30), "OBJECT_ID" VARCHAR2(20), "DATA_OBJECT_ID" VARCHAR2(10), --需要修改后的数据类型 "OBJECT_TYPE" VARCHAR2(19), "CREATED" DATE, "LAST_DDL_TIME" DATE, "TIMESTAMP" VARCHAR2(19), "STATUS" VARCHAR2(7), "TEMPORARY" VARCHAR2(1), "GENERATED" VARCHAR2(1), "SECONDARY" VARCHAR2(1), "NAMESPACE" NUMBER, "EDITION_NAME" VARCHAR2(30))TABLESPACE "USERS";
4.开始在线重定义
alter session force parallel dml parallel 4;alter session force parallel query parallel 4;BEGINDBMS_REDEFINITION.START_REDEF_TABLE(uname => 'HR',orig_table => 'TEST_REDE',int_table => 'TEST_REDE_INTER',col_mapping => 'OWNER OWNER, OBJECT_NAME OBJECT_NAME,SUBOBJECT_NAME SUBOBJECT_NAME,OBJECT_ID OBJECT_ID,to_char(DATA_OBJECT_ID) DATA_OBJECT_ID, --由于更改数据类型,需要手工转换OBJECT_TYPE OBJECT_TYPE,CREATED CREATED,LAST_DDL_TIME LAST_DDL_TIME,TIMESTAMP TIMESTAMP,STATUS STATUS,TEMPORARY TEMPORARY,GENERATED GENERATED,SECONDARY SECONDARY,NAMESPACE NAMESPACE,EDITION_NAME EDITION_NAME',options_flag => DBMS_REDEFINITION.CONS_USE_ROWID);END;/
5.同步中间数据,减少finish_redef_table时间
begin dbms_redefinition.sync_interim_table(uname => '&USERNAME', orig_table => '&SOURCE_TAB', int_table => '&INT_TAB');end;/
6.复制相关约束,依赖对象
# 如果更改了列名,或者增加列,必要时,手工创建相关索引等对象DECLARE num_errors PLS_INTEGER;BEGIN DBMS_REDEFINITION.COPY_TABLE_DEPENDENTS(uname => '&USERNAME', orig_table => '&SOURCE_TAB', int_table => '&INT_TAB', copy_indexes => DBMS_REDEFINITION.cons_orig_params, copy_triggers => TRUE, copy_constraints => TRUE, copy_privileges => TRUE, ignore_errors => FALSE, num_errors => num_errors, copy_statistics => TRUE);END;/
7.完成在线重定义
begindbms_redefinition.finish_redef_table(uname => '&USERNAME', orig_table => '&SOURCE_TAB', int_table => '&INT_TAB');end;
参考:
https://blog.csdn.net/bikeorcl/article/details/103974032
数据
类型
在线
对象
手工
必要
信息
时间
索引
结构
参考
同步
验证
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
网络安全的知识贩子
五家渠软件开发
大学生参加校园网络安全大赛
生产产品数据库设计入门经典
软件开发需要多少个经理
福建省首届网络安全攻防大赛
飞q用的服务器是什么
淄博市网络安全周活动
服务器怎么获得ip
大学生网络安全的辩论
关于网络安全的校园新闻稿
在数据库mock数据后如何保存
王者荣耀游戏服务器被锁
涉密软件开发保密工作方案
数据库目录中文名
服务器处理消息模块的设计与实现
5g网络安全研究现状
梦幻西游服务器开区多久
tcp udp 服务器管理
qq登录服务器怎么打开
ftp一定要服务器吗
安卓手机管理服务器数据库
网络安全系统等级分为多少级
哈工大网络安全竞赛
软件开发就是软件技木
桓台生产软件开发咨询
数据库系统概念百度网盘
网络安全的圆心和最大屏障
数据库损坏了有没有挽救的办法
软件开发 api spec