--------------对表T增加字段name-----------------------
------创建原始表T
SQL> CREATE TABLE T (ID NUMBER PRIMARY KEY, TIME DATE);
表已创建。
SQL>
SQL> INSERT INTO T SELECT ROWNUM, CREATED FROM DBA_OBJECTS;
已创建50316行。
SQL>
SQL> COMMIT;
提交完成。
-----创建中间表T_NEW
SQL> CREATE TABLE T_NEW (ID NUMBER PRIMARY KEY, TIME DATE ,NAME VARCHAR2(20));
表已创建。
------调用DBMS_REDEFINITION.CAN_REDEF_TABLE()过程,如果表不满足重定义的条件,将会报错并给出原因。
SQL> EXEC DBMS_REDEFINITION.CAN_REDEF_TABLE(USER, 'T', DBMS_REDEFINITION.CONS_USE_PK);
PL/SQL 过程已成功完成。
-------调用DBMS_REDEFINITION.START_REDEF_TABLE()过程,并提供下列参数:被重定义的表的名称、中间表的名称、列的映射规则、重定义方法。
SQL> EXEC DBMS_REDEFINITION.START_REDEF_TABLE(USER, 'T', 'T_NEW','ID ID, TIME TIME', DBMS_REDEFINITION.CONS_USE_PK);
PL/SQL 过程已成功完成。
如果操作期间对表T有大量DML操作,可以执行SYNC_INTERIM_TABLE来减少finsh_redef_table的锁表时间。
SQL> EXEC DBMS_REDEFINITION.SYNC_INTERIM_TABLE(user,'T','T_NEW');
PL/SQL 过程已成功完成。
-------执行DBMS_REDEFINITION.FINISH_REDEF_TABLE()过程完成表的重定义。
SQL> EXEC DBMS_REDEFINITION.FINISH_REDEF_TABLE(USER, 'T', 'T_NEW');
PL/SQL 过程已成功完成。
-------查看表T的表结构,已经增加了name列。
SQL> desc t
名称 是否为空? 类型
----------------------------------------- -------- ----------------------------
ID NOT NULL NUMBER
TIME DATE
NAME VARCHAR2(20)
-------------把表T变为分区表-------------------------------------
SQL> CREATE TABLE T (ID NUMBER PRIMARY KEY, TIME DATE);
表已创建。
SQL> INSERT INTO T SELECT ROWNUM, CREATED FROM DBA_OBJECTS;
已创建50330行。
SQL> commit;
提交完成。
SQL> CREATE TABLE T_NEW (ID NUMBER PRIMARY KEY, TIME DATE) PARTITION BY RANGE (TIME)
2 (PARTITION P1 VALUES LESS THAN (TO_DATE('2004-7-1', 'YYYY-MM-DD')),
3 PARTITION P2 VALUES LESS THAN (TO_DATE('2005-1-1', 'YYYY-MM-DD')),
4 PARTITION P3 VALUES LESS THAN (TO_DATE('2005-7-1', 'YYYY-MM-DD')),
5 PARTITION P4 VALUES LESS THAN (MAXVALUE));
表已创建。
SQL> EXEC DBMS_REDEFINITION.CAN_REDEF_TABLE(USER, 'T', DBMS_REDEFINITION.CONS_USE_PK);
PL/SQL 过程已成功完成。
SQL> EXEC DBMS_REDEFINITION.START_REDEF_TABLE(USER, 'T', 'T_NEW','ID ID, TIME TIME', DBMS_REDEFINITION.CONS_USE_PK);
PL/SQL 过程已成功完成。
SQL> SELECT COUNT(*) FROM T PARTITION (P4);
COUNT(*)
----------
50330
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/22034023/viewspace-674554/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/22034023/viewspace-674554/
9154

被折叠的 条评论
为什么被折叠?



