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

  SQL>

  SQL> create index XXIDX_CMDFINISH_NEW on XXNEW(COMMANDFINISHTIME)

  2 tablespace USER_IDX_PT

  3 pctfree 10

  4 initrans 2

  5 maxtrans 255

  6 storage

  7 (

  8 initial 64K

  9 minextents 1

  10 maxextents unlimited

  11 );

  Index created

  SQL> select * from user_indexes u where u.table_name

  2 ='XXNEW';

  INDEX_NAME INDEX_TYPE TABLE_OWNER TABLE_NAME TABLE_TYPE UNIQUENESS COMPRESSION PREFIX_LENGTH TABLESPACE_NAME INI_TRANS MAX_TRANS INITIAL_EXTENT NEXT_EXTENT MIN_EXTENTS MAX_EXTENTS PCT_INCREASE PCT_THRESHOLD INCLUDE_COLUMN FREELISTS FREELIST_GROUPS PCT_FREE LOGGING BLEVEL LEAF_BLOCKS DISTINCT_KEYS AVG_LEAF_BLOCKS_PER_KEY AVG_DATA_BLOCKS_PER_KEY CLUSTERING_FACTOR STATUS NUM_ROWS SAMPLE_SIZE LAST_ANALYZED DEGREE INSTANCES PARTITIONED TEMPORARY GENERATED SECONDARY BUFFER_POOL USER_STATS DURATION PCT_DIRECT_ACCESS ITYP_OWNER ITYP_NAME PARAMETERS GLOBAL_STATS DOMIDX_STATUS DOMIDX_OPSTATUS FUNCIDX_STATUS JOIN_INDEX IOT_REDUNDANT_PKEY_ELIM DROPPED

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

  I_SNAP$_XXOLD_N NORMAL CSADMIN XXNEW TABLE UNIQUE DISABLED USER_DATA 2 255 65536 1 2147483645 10 YES 2 13276 2880844 1 1 141481 VALID 2880844 2880844 2009-11-10 11 1 1 NO N N N DEFAULT NO NO NO NO NO

  XXIDX_CMDFINISH_NEW NORMAL CSADMIN XXNEW TABLE NONUNIQUE DISABLED USER_IDX_PT 2 255 65536 1 2147483645 10 YES 2 9233 2149054 1 1 2331831 VALID 2880608 2880608 2009-11-10 13 1 1 NO N N N DEFAULT NO NO NO NO NO

  1 rows selected

  SQL> grant select on XXNEW to PUBLIC;

  Grant succeeded

  SQL> EXEC DBMS_REDEFINITION.FINISH_REDEF_TABLE('CSADMIN', 'XXOLD', 'XXNEW');

  PL/SQL procedure successfully completed

  SQL> SELECT COUNT(*) FROM XXOLD;

  COUNT(*)

  ----------

  2880847

  SQL> SELECT COUNT(*) FROM MLOG$_XXOLD;

  SELECT COUNT(*) FROM MLOG$_XXOLD

  ORA-00942: table or view does not exist

  SQL> SELECT COUNT(*) FROM XXNEW;

  COUNT(*)

  ----------

  2880847

  SQL> alter table XXOLD

  2 add constraint XXOLD_KEY primary key (COMMANDSEQ)

  3 using index

  4 tablespace USER_DATA

  5 pctfree 10

  6 initrans 2

  7 maxtrans 255

  8 storage

  9 (

  10 initial 64K

  11 minextents 1

  12 maxextents unlimited

  13 );

  Table altered

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

  例外,在start之后,向原表插入数据出现了ora-600错误。据说是10g的bug,待证实

  http://blog.csdn.net/newzqs/archive/2009/06/19/4281926.aspx

  SQL> CREATE TABLE XXTMP AS SELECT * FROM XXOLD WHERE 1=0;

  Table created

  SQL> EXEC DBMS_REDEFINITION.START_REDEF_TABLE('CSADMIN', 'XXOLD','XXTMP',NULL,2);

  PL/SQL procedure successfully completed

  SQL> SELECT COUNT(*) FROM XXOLD;

  COUNT(*)

  ----------

  0

  SQL> SELECT COUNT(*) FROM XXNEW;

  COUNT(*)

  ----------

  4

  SQL> SELECT COUNT(*) FROM XXTMP;

  COUNT(*)

  ----------

  0

  SQL> INSERT INTO xxold select * from xxnew;

  INSERT INTO xxold select * from xxnew

  ORA-00600: internal error code, arguments: [kghGetHpSz1], [0x4AA2BF24], [], [], [], [], [], []

  SQL> INSERT INTO xxnew select * from xxnew;

  4 rows inserted

  SQL> INSERT INTO xxold select * from xxnew;

  INSERT INTO xxold select * from xxnew

  ORA-00600: internal error code, arguments: [kghGetHpSz1], [0x49505F94], [], [], [], [], [], []

  SQL> INSERT INTO xxnew values('a',sysdate);

  1 row inserted

  SQL> commit

  2 ;

  Commit complete

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