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