oracle在线重定义之表结构

oracle在线重定义之表结构

---首先创建一个源表

create table aa (a varchar2(8),bnumber(10),c varchar2(8));

insert into aa values('abc',10,'bca');

insert into aa values('ab',10,'bca');

insert into aa values('a',10,'bca');

--重定义的表必须要有主键

ALTER TABLE aa ADD CONSTRAINT PK_A PRIMARYKEY (A);

--创建一张中间表

create table bb (a varchar2(8),bVARCHAR2(10),c varchar2(8));

---进行检查源表的重定义

SQL> execDbms_Redefinition.can_redef_table ('scott',aa, dbms_redefinition.cons_use_pk );

PL/SQL procedure successfully completed

---开始重定义(列名必须要包含主键和要改字段的字段,使用to_numberto_char,不写的其他字段不会把数据复制过去)

SQL> execdbms_redefinition.start_redef_table ('scott',aa,bb,'a a,to_char(b) b,c c');

PL/SQL procedure successfully completed

--结束重定义

SQL> execdbms_redefinition.finish_redef_table('scott',aa,bb);

PL/SQL procedure successfully completed

 

 

中间遇到的几个报错解决方案

SQL> execdbms_redefinition.start_redef_table ('scott','AA','BB','a a,to_char(b) b');

begin dbms_redefinition.start_redef_table('scott','AA','BB','a a,to_char(b) b'); end;

ORA-12091: 不能联机重新定义具有实体化视图的表 "SCOTT"."AA"

ORA-06512: "SYS.DBMS_REDEFINITION", line 50

ORA-06512: "SYS.DBMS_REDEFINITION", line 1343

ORA-06512: line 1

 

删除物化视图

drop materialized view log on aa;

 

SQL> execdbms_redefinition.start_redef_table ('scott','AA','BB','a a,to_char(b) b');

begin dbms_redefinition.start_redef_table('scott','AA','BB','a a,to_char(b) b'); end;

ORA-23539: 当前正在重新定义 "SCOTT"."AA"

ORA-06512: "SYS.DBMS_REDEFINITION", line 50

ORA-06512: "SYS.DBMS_REDEFINITION", line 1343

ORA-06512: line 1

结束正在进行的重定义

SQL> execdbms_redefinition.abort_redef_table('scott','aa','bb');

PL/SQL procedure successfully completed

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值