oracle重新定义表,ORACLE 在线重新定义表分区表重定义为普通表。

环境:AIX power 7 128g+ oracle  10G  RAC

需求:

源表A 目前166G 已经做了分区  做的是hash 分区,但是目前。表需要做调整 需要用另外一个字段做列表分区。

计划:

1、将源表转化为普通表。

2、将普通表转化为分区表。

操作:

1、expdp 备份表 166G     大概十几分钟就备份完成.

expdp xx/xxxxdirectory=exp_dir dumpfile= xxxx.dmp

tables=ADAPTER_ORIGINALDATA

logfile= xxxx.log

parallel=10

2、备份表的索引ddL

使用工具

3、创建新的表空间

create  tablespacexxxdatafile ‘xxxxx.dbf’

size 1G autoextend on next 500M maxsize 10g将表空间赋给用户

alter   user   adapter

quota   unlimited   on   xxxxx;

4、创建中间表

CREATE

TABLE "ADAPTER"."xxxx"

(        "EVENTID"

CHAR(32) NOT NULL ENABLE,

"RECORDCLASSIFYING"

VARCHAR2(32),

"RECORDTITLE" VARCHAR2(50),

"EFFECTIVETIME" DATE,

"AUTHORORGANIZATION"

VARCHAR2(56),

"SOURCEID" VARCHAR2(32),

"VERSIONNUMBER" VARCHAR2(10),

"AUTHOR" VARCHAR2(32),

"SYSTEMTIME" DATE,

"UPLOADTIME" DATE,

"HEADER" VARCHAR2(4000),

"BODY" BLOB,

"DOCFORMAT" VARCHAR2(8),

"ZIPTYPE" VARCHAR2(8),

"PROCESSFLAG" CHAR(1),

"ORIGINALBODY" BLOB,

"MPIPROCESSFLAG" CHAR(1),

"MPI" VARCHAR2(32),

"DCID" CHAR(16),

"CREATETIME" DATE,

"AUTHORORGANIZATION_TEXT"

VARCHAR2(56)

)  TABLESPACExxxxxx;

5、开始重定义

execute

dbms_redefinition.start_redef_table('hzwsj','old_table','mid_table');

execute

dbms_redefinition.sync_interim_table('hzwsj','old_table','mid_table');

execute

dbms_redefinition.finish_redef_table('hzwsj','old_table','mid_table');

6、创建索引

7、完成。

注意:两个源表和中间表需要相同主键。

在重定义过程中

execute dbms_redefinition.start_redef_table('hzwsj','old_table','mid_table'); 这一步 为转移数据步骤。

完成后的mid_table 可删除。

166G 数据 POWER 7 处理器  128G 内存  大概需要两个小时。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值