oracle在线重定义之表结构
2013-08-22 12:22
519 查看
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_number或to_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
---首先创建一个源表
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_number或to_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
相关文章推荐
- oracle普通表转分区表(在线重定义方式)
- 使用ORACLE在线重定义将普通表改为分区表
- oracle 11g 在线重定义(online redefinition)介绍
- oracle在线重定义表
- Oracle 9i中表的在线重定义
- oracle 在线重定义将普通表转换成分区表
- 使用ORACLE在线重定义将普通表改为分区表
- 了解Oracle在线重定义Online Redefinition
- 用Oracle在线重定义把普通表改成分区表
- ORACLE 普通表转换成分区表(在线重定义)
- 利用Oracle在线重定义Online Redefinition清理历史数据
- Oracle之在线重定义功能
- 【转】Oracle在线重定义DBMS_REDEFINITION 普通表—>分区表
- 利用Oracle在线重定义Online Redefinition清理历史数据
- Oracle11新特性——支持对物化视图日志的在线重定义
- 利用Oracle在线重定义Online Redefinition清理历史数据
- 在线问答网站结构定义和信息处理系统---功能规格说明书
- oracle PL/SQL的基本构成,块结构和基本语法要求,数据类型,变量定义,运算符和函数
- ORACLE 普通表转换成分区表(在线重定义)
- oracle 10g在线重定义新特性——关联对象自动重命名(一)