Oracle 11G DBMS_REDEFINITION修改表数据类型
发表于:2025-01-23 作者:千家信息网编辑
千家信息网最后更新 2025年01月23日,11G DBMS_REDEFINITION修改表数据类型1.获取源表结构信息SYS@honor1 > SET LONG 999999SYS@honor1 > SELECT DBMS_METADATA.
千家信息网最后更新 2025年01月23日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安全错误
数据库的锁怎样保障安全
数据是数据库对象是
php数据库表格
华为黄河服务器概念股
考研数据库视频
如何强化网络安全主体责任
北京点滴身边网络技术公司
中服 数据库查询系统
数据库 题库系统
网络安全论文摘要怎么写
ssh数据库信息安全
达梦数据库查询日志策略
网络服务器哪家机房好
重庆软件开发驻场公司有哪些
listview数据库图片
软件开发各类文档
河北展览展厅中控服务器
工业网络技术教材
贵州灼跃互联网科技有限
如何获取代理服务器端口
我的世界最大城市服务器
塘沽区erp软件开发
数据库加密的常用技术
网络安全法 屏蔽
软件开发费用应入哪个科目
网络安全维护技术性对策要求
网络技术应用就业
绝地求生应该选什么服务器
江西路通科技 网络安全
球探体育足球数据库
日企软件开发 落后