Chinaunix首页 | 论坛 | 博客
  • 博客访问: 6559510
  • 博文数量: 1005
  • 博客积分: 8199
  • 博客等级: 中将
  • 技术积分: 13071
  • 用 户 组: 普通用户
  • 注册时间: 2010-05-25 20:19
个人简介

脚踏实地、勇往直前!

文章分类

全部博文(1005)

文章存档

2020年(2)

2019年(93)

2018年(208)

2017年(81)

2016年(49)

2015年(50)

2014年(170)

2013年(52)

2012年(177)

2011年(93)

2010年(30)

分类:

2011-05-12 15:20:06

SQL> CREATE TABLE tb_add_field (
  2    id            NUMBER(10),
  3    created_date  DATE,
  4    lookup_id     NUMBER(10),
  5    data          VARCHAR2(50)
  6  );
表已创建。
SQL> DECLARE
  2    l_lookup_id    Number;
  3    l_create_date  DATE;
  4  BEGIN
  5    FOR i IN 1 .. 1000000 LOOP
  6      IF MOD(i, 3) = 0 THEN
  7        l_create_date := ADD_MONTHS(SYSDATE, -24);
  8        l_lookup_id   := 2;
  9      ELSIF MOD(i, 2) = 0 THEN
 10        l_create_date := ADD_MONTHS(SYSDATE, -12);
 11        l_lookup_id   := 1;
 12      ELSE
 13        l_create_date := SYSDATE;
 14        l_lookup_id   := 3;
 15      END IF;
 16 
 17      INSERT INTO tb_add_field (id, created_date, lookup_id, Data)
 18      VALUES (i, l_create_date, l_lookup_id, 'This is some data for ' || i);
 19    END LOOP;
 20    COMMIT;
 21  END;
 22  /
PL/SQL 过程已成功完成。
SQL> CREATE TABLE tb_add_field_mid (
  2    id            NUMBER(10),
  3    created_date  DATE,
  4    lookup_id     NUMBER(10),
  5    data          VARCHAR2(50),
  6    add_field     Varchar2(2)
  7  );
表已创建。
SQL> ALTER TABLE tb_add_field ADD (
  2    CONSTRAINT tb_add_field_pk PRIMARY KEY (id)
  3  );
表已更改。
SQL> Begin
  2  Dbms_Redefinition.Can_Redef_Table(USER, 'TB_ADD_FIELD',options_flag =>DBMS_REDEFINITION.CONS_USE_PK);
  3  End;
  4  /
PL/SQL 过程已成功完成。
-- id id
-- 第一个id代表orig_table的字段,第二个id代表int_table的字段
SQL> BEGIN
  2    DBMS_REDEFINITION.start_redef_table(
  3      uname      => USER,
  4      orig_table => 'TB_ADD_FIELD',
  5      int_table  => 'TB_ADD_FIELD_MID',
  6      col_mapping=>'id id, created_date created_date, lookup_id lookup_id, data data, ''A'' add_field',
  7      options_flag => dbms_redefinition.cons_use_pk);
  8  END;
  9  /
PL/SQL 过程已成功完成。
SQL> BEGIN
  2    dbms_redefinition.sync_interim_table(
  3      uname      => USER,
  4      orig_table => 'TB_ADD_FIELD',
  5      int_table  => 'TB_ADD_FIELD_MID');
  6  END;
  7 
  8  /
PL/SQL 过程已成功完成。
SQL> BEGIN
  2    dbms_redefinition.finish_redef_table(
  3      uname      => USER,
  4      orig_table => 'TB_ADD_FIELD',
  5      int_table  => 'TB_ADD_FIELD_MID');
  6  END;
  7  /
PL/SQL 过程已成功完成。
SQL> desc TB_ADD_FIELD;
 名称                                      是否为空? 类型
 ----------------------------------------- -------- ----------------------------
 ID                                                 NUMBER(10)
 CREATED_DATE                                       DATE
 LOOKUP_ID                                          NUMBER(10)
 DATA                                               VARCHAR2(50)
 ADD_FIELD                                          VARCHAR2(2)
SQL> select * from TB_ADD_FIELD where rownum=1;
        ID CREATED_DATE    LOOKUP_ID                                           
---------- -------------- ----------                                           
DATA                                               AD                          
-------------------------------------------------- --                          
       477 12-5月 -09              2                                           
This is some data for 477                          A                           
                                                                               
SQL>
SQL> spool off;
阅读(1672) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~