|
最近看到很多同志因为种种原因要调整字段的前后顺序,筒子们也各有各的招儿,常见的比如:重建、使用view、在线重定义等。 从Oracle 9i,Oracle推出了在线重定义的功能,在很大程度上帮助DBA完成很多修改而不影响应用。前面我示范了在线重定义修改普通表为分区表的一个很简单的demo,这个修改字段顺序,和那个例子在使用上基本一样。我就再罗嗦并重复一下吧,增加一点GDP吧,哈哈
SQL> create table toms_test (no int,name varchar2(32)); 表已创建。 SQL> insert into toms_test values(1,'test string'); 已创建 1 行。 SQL> commit; 提交完成。 SQL> desc toms_test 名称 是否为空? 类型 ----------------------------------------- -------- ---------------------------- NO NUMBER(38) NAME VARCHAR2(32) SQL> SQL> create table toms_test_mid (name varchar2(32),no int);
表已创建。 SQL> desc toms_test_mid; 名称 是否为空? 类型 ----------------------------------------- -------- ---------------------------- NAME VARCHAR2(32) NO NUMBER(38) SQL> execute dbms_redefinition.can_redef_table('study','toms_test',dbms_redefinition.cons_use_rowid); PL/SQL 过程已成功完成。 SQL> execute dbms_redefinition.start_redef_table('study','toms_test','toms_test_mid','no no,name name',dbms_redefinition.cons_use_rowid); PL/SQL 过程已成功完成。 SQL> execute dbms_redefinition.finish_redef_table('study','toms_test','toms_test_mid'); PL/SQL 过程已成功完成。 SQL> desc toms_test 名称 是否为空? 类型 ----------------------------------------- -------- ---------------------------- NAME VARCHAR2(32) NO NUMBER(38) SQL> select * from toms_test; test string 1 SQL> alter table toms_test drop column "SYS_C00003_07012018:51:36$"; 表已更改。 SQL> SQL> desc toms_test; 名称 是否为空? 类型 ----------------------------------------- -------- -------------------- NAME VARCHAR2(32) NO NUMBER(38) SQL>
|