Chinaunix首页 | 论坛 | 博客
  • 博客访问: 6683177
  • 博文数量: 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)

分类: Oracle

2011-05-12 16:40:15

SQL> CREATE TABLE tb_date_to_vchr (
  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_date_to_vchr (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_date_to_vchr_mid (
  2    id            NUMBER(10),
  3    created_date  Varchar2(1024),
  4    lookup_id     NUMBER(10),
  5    data          VARCHAR2(50)
  6  );
表已创建。
SQL>
SQL> ALTER TABLE tb_date_to_vchr ADD (
  2    CONSTRAINT tb_date_to_vchr_pk PRIMARY KEY (id)
  3  );
表已更改。
SQL> Begin
  2  Dbms_Redefinition.Can_Redef_Table(USER, 'TB_DATE_TO_VCHR');
  3  End;
  4  /
PL/SQL 过程已成功完成。
SQL> BEGIN
  2    DBMS_REDEFINITION.start_redef_table(
  3      uname      => USER,
  4      orig_table => 'TB_DATE_TO_VCHR',
  5      int_table  => 'TB_DATE_TO_VCHR_MID',
  6      col_mapping=>'Id Id, to_char(Created_Date,''YYYYMMDD HH24:MI:Ss'') Created_Date, Lookup_Id Lookup_Id, Data',
  7      options_flag => DBMS_REDEFINITION.cons_use_pk);
  8      -- --如果有主键则是 options_flag => DBMS_REDEFINITION.cons_use_pk,如果没有DBMS_REDEFINITION.cons_use_rowid
  9  END;
 10  /
PL/SQL 过程已成功完成。
SQL> BEGIN
  2    dbms_redefinition.sync_interim_table(
  3      uname      => USER,
  4      orig_table => 'TB_DATE_TO_VCHR',
  5      int_table  => 'TB_DATE_TO_VCHR_MID');
  6  END;
  7  /
PL/SQL 过程已成功完成。
SQL> ALTER TABLE tb_date_to_vchr_MID ADD (
  2    CONSTRAINT tb_date_to_vchr_MID_pk PRIMARY KEY (id)
  3  );
表已更改。
SQL>
SQL> BEGIN
  2    dbms_redefinition.finish_redef_table(
  3      uname      => USER,
  4      orig_table => 'TB_DATE_TO_VCHR',
  5      int_table  => 'TB_DATE_TO_VCHR_MID');
  6  END;
  7  /
PL/SQL 过程已成功完成。
SQL> Drop Table TB_DATE_TO_VCHR_MID;
表已删除。
SQL>  ALTER TABLE TB_DATE_TO_VCHR
  2      RENAME CONSTRAINT TB_DATE_TO_VCHR_MID_PK TO TB_DATE_TO_VCHR_PK;
表已更改。
SQL> spool off;
阅读(2123) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~