当前所在位置:珠峰网资料 >> 计算机 >> Oracle认证 >> 正文
dbms_redefinition表的重定义(二)
发布时间:2010/12/9 10:27:25 来源:www.xue.net 编辑:城市总裁吧

  5

  SQL> select count(*) from mlog$_old;

  COUNT(*)

  ----------

  1

  SQL> exec dbms_redefinition.finish_redef_table('csadmin','old','new');

  PL/SQL procedure successfully completed

  SQL> select count(*) from old;

  COUNT(*)

  ----------

  6

  SQL> select count(*) from new;

  COUNT(*)

  ----------

  6

  SQL> select count(*) from mlog$_old;

  select count(*) from mlog$_old

  ORA-00942: table or view does not exist

  *********************************************

  测试3:用DBMS_REDEFINITION调整列的位置

  SQL> SELECT INDEX_NAME FROM USER_INDEXES WHERE TABLE_NAME='OLD';

  INDEX_NAME

  ------------------------------

  IDX_USERNAME

  SQL> SELECT CONSTRAINT_NAME FROM USER_CONSTRAINTS WHERE TABLE_NAME='OLD';

  CONSTRAINT_NAME

  ------------------------------

  USERNAME_KEY

  SQL> TRUNCATE TABLE NEW;

  Table truncated

  SQL> DESC OLD;

  Name Type Nullable Default Comments

  -------- ------------ -------- ------- --------

  LSTTIME DATE Y

  USERNAME VARCHAR2(10)

  SQL> DESC NEW

  Name Type Nullable Default Comments

  -------- ------------ -------- ------- --------

  USERNAME VARCHAR2(10) Y

  LSTTIME DATE Y

  SQL> exec dbms_redefinition.start_redef_table('CSADMIN','OLD','NEW','USERNAME USERNAME,LSTTIME LSTTIME',2);

  PL/SQL procedure successfully completed

  SQL> exec dbms_redefinition.finish_redef_table('csadmin','old','new');

  PL/SQL procedure successfully completed

  SQL> DESC OLD;

  Name Type Nullable Default Comments

  -------- ------------ -------- ------- --------

  USERNAME VARCHAR2(10) Y

  LSTTIME DATE Y

  SQL> DESC NEW

  Name Type Nullable Default Comments

  -------- ------------ -------- ------- --------

  LSTTIME DATE Y

  USERNAME VARCHAR2(10)

  SQL> SELECT INDEX_NAME FROM USER_INDEXES WHERE TABLE_NAME='OLD';

  INDEX_NAME

  ------------------------------

  SQL> SELECT CONSTRAINT_NAME FROM USER_CONSTRAINTS WHERE TABLE_NAME='OLD';

  CONSTRAINT_NAME

  ------------------------------

  SQL> SELECT INDEX_NAME FROM USER_INDEXES WHERE TABLE_NAME='NEW';

  INDEX_NAME

  ------------------------------

  IDX_USERNAME

  SQL> SELECT CONSTRAINT_NAME FROM USER_CONSTRAINTS WHERE TABLE_NAME='NEW';

  CONSTRAINT_NAME

  ------------------------------

  USERNAME_KEY

  测试4:转换原表为分区表

  Connected to Oracle Database 10g Enterprise Edition Release 10.2.0.3.0

  Connected as csadmin

  SQL> drop table xxnew;

  drop table xxnew

  ORA-12083: must use DROP MATERIALIZED VIEW to drop "CSADMIN"."XX_NEW"

  SQL> drop materialized view xx_new;

  Materialized view dropped

  SQL> drop table xx_new;

  Table dropped

  SQL> EXEC DBMS_REDEFINITION.CAN_REDEF_TABLE('CSADMIN', 'XXOLD', DBMS_REDEFINITION.cons_use_rowid);

  begin DBMS_REDEFINITION.CAN_REDEF_TABLE('CSADMIN', 'XXOLD', DBMS_REDEFINITION.cons_use_rowid); end;

  ORA-12091: cannot online redefine table "CSADMIN"."XXOLD" with materialized views

  ORA-06512: at "SYS.DBMS_REDEFINITION", line 137

  ORA-06512: at "SYS.DBMS_REDEFINITION", line 1478

  ORA-06512: at line 2

  SQL> select * from user_mview_logs where master='XXOLD';

  LOG_OWNER MASTER LOG_TABLE LOG_TRIGGER ROWIDS PRIMARY_KEY OBJECT_ID FILTER_COLUMNS SEQUENCE INCLUDE_NEW_VALUES

  ------------------------------ ------------------------------ ------------------------------ ------------------------------ ------ ----------- --------- -------------- -------- ------------------

  CSADMIN XXOLD MLOG$_XXOLD NO YES NO NO NO NO

  SQL> drop materialized view XXOLD;

  ORA-12003: materialized view "CSADMIN"."XXOLD" does not exist

  SQL> drop materialized view LOG ON XXOLD;

  Materialized view log dropped

  SQL> select * from user_mview_logs where master='XXOLD';

  LOG_OWNER MASTER LOG_TABLE LOG_TRIGGER ROWIDS PRIMARY_KEY OBJECT_ID FILTER_COLUMNS SEQUENCE INCLUDE_NEW_VALUES5

广告合作:400-664-0084 全国热线:400-664-0084
Copyright 2010 - 2017 www.my8848.com 珠峰网 粤ICP备15066211号
珠峰网 版权所有 All Rights Reserved