Oracle 11G DBMS_REDEFINITION修改表数据类型
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,11G DBMS_REDEFINITION修改表数据类型1.获取源表结构信息SYS@honor1 > SET LONG 999999SYS@honor1 > SELECT DBMS_METADATA.
千家信息网最后更新 2026年11月01日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安全错误
数据库的锁怎样保障安全
互联网与科技
伟宏互联网科技
广州万易互联网科技有限公司
互联网科技行业发展
美国互联网科技巨头监管
重庆互联网络科技
有马互联网科技
致聘互联网科技
米客互联网科技
国外互联网科技网站
互联网科技中介
南山科技园互联网公司有哪些
互联网保险科技创业
区块链结合互联网科技
互联网科技圈年度人物
合肥互联网科技公司公章图片
互联网金融科技元年
广东鹅鹅鹅互联网科技有限公司
珠海东科互联网科技有限公司
互联网科技创业计划的风险分析
科技互联网
广州大一互联网络科技有限公司
高科技互联网
互联网科技官网
互联网络科技有限公司
互联网科技革命
湖南洣水互联网科技有限公司扣款
新兴科技互联网创新大赛颁奖典礼
互联网科技品牌
互联网科技对化妆品行业