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;
阅读(2116) | 评论(0) | 转发(0) |