oracle線上重定義表步驟
---1 設定並行(可選項)
SQL> alter session force parallel dml parallel 20;
Session altered
SQL> alter session force parallel query parallel 20;
Session altered
---2 建立中間表(為了演示包含了原始表)
drop table tab1_child;
drop table tab1;
drop table tab1_inte;
drop table tab1_parent;
create table tab1(id number,name varchar2(20),p_id number);
create table tab1_inte(id number,name varchar2(20),p_id number);
create table tab1_parent(id number,name varchar2(20));
create table tab1_child(id number,name varchar2(20),p_id number);
insert into tab1 values(1,'a',1);
insert into tab1 values(2,'b',2);
insert into tab1_parent values(1,'a_p');
insert into tab1_parent values(2,'b_p');
insert into tab1_child values(1,'a_c',1);
insert into tab1_child values(2,'b_c',1);
commit;
create index tab1_indx on TAB1 (name);
alter table TAB1
add constraint tab1_pk primary key (ID);
;
alter table TAB1_PARENT
add constraint tab1_parent_pk primary key (ID);
alter table TAB1 add constraint tab1_con foreign key (P_ID)
references tab1_parent (ID);
alter table TAB1_CHILD
add constraint tab1_child_pk primary key (ID);
alter table TAB1_CHILD
add constraint tab1_child_con foreign key (P_ID)
references tab1 (ID);
----3查詢原表是否可以線上重定義(根據主鍵或rowid)
options_flag
--- dbms_redefinition.cons_use_pk
--- dbms_redefinition.cons_use_rowid
SQL> EXEC DBMS_REDEFINITION.CAN_REDEF_TABLE('GFOLTP', 'TAB1', DBMS_REDEFINITION.CONS_USE_PK);
PL/SQL procedure successfully completed
--- 4啟動線上重定義
SQL> EXEC DBMS_REDEFINITION.START_REDEF_TABLE('GFOLTP', 'TAB1','TAB1_INTE');
PL/SQL procedure successfully completed
---5複製依賴物件(約束,索引,觸發器,許可權,統計資訊)
線上重定義的原理是rename, 所以需要此步驟
SQL> DECLARE
2 num_errors PLS_INTEGER;
3 begin
4 DBMS_REDEFINITION.copy_table_dependents(uname=> 'GFOLTP',
5 orig_table => 'TAB1',
6 int_table => 'TAB1_INTE',
7 num_errors => num_errors,copy_statistics => true);
8 end;
9 /
PL/SQL procedure successfully completed
----6 同步資料(可選項 資料變化的情況下使用)
SQL> EXEC dbms_redefinition.sync_interim_table(uname=> 'GFOLTP',orig_table => 'TAB1',int_table => 'TAB1_INTE');
PL/SQL procedure successfully completed
--- 7 完成現在重定義
SQL> EXEC DBMS_REDEFINITION.FINISH_REDEF_TABLE('GFOLTP', 'TAB1','TAB1_INTE');
PL/SQL procedure successfully completed
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/15747463/viewspace-750343/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle 表線上重定義Oracle
- oracle表線上重定義Oracle
- 【Oracle】線上重定義表Oracle
- Oracle表的線上重定義(一)Oracle
- Oracle中重建表的線上重定義Oracle
- 線上重定義表ORACLE 11GOracle
- oracle 線上重定義Oracle
- Oracle線上重定義Oracle
- 【TABLE】oracle表線上重定義注意事項Oracle
- oracle實驗記錄 (線上重定義表)Oracle
- ORACLE 線上重新定義表分割槽表重定義為普通表。Oracle
- 在oracle 9i下線上重定義表Oracle
- 線上重定義的操作步驟__普通錶轉換為分割槽表的實驗案例
- Oracle的線上重定義(轉)Oracle
- dbms_redefinition線上重定義表
- 使用ORACLE線上重定義將普通表改為分割槽表Oracle
- oracle分割槽表線上重定義欄位not null問題OracleNull
- ORACLE 普通錶轉換成分割槽表(線上重定義)Oracle
- 資料庫表的線上重定義資料庫
- 利用DBMS_REDEFINITION線上重定義表
- 【Oracle】利用線上重定義的方式改變普通表為分割槽表Oracle
- ORACLE 普通錶轉換成分割槽表(線上重定義)(zt)Oracle
- Oracle線上重定義之DBMS_REDEFINITIONOracle
- mysql裡alter table 重定義主鍵的步驟:MySql
- Oracle Online Redefinition線上重定義(上)Oracle
- Oracle Online Redefinition線上重定義(中)Oracle
- Oracle Online Redefinition線上重定義(下)Oracle
- 普通錶轉換分割槽表-線上重定義
- 分割槽表和dbms_redefinition包線上重定義表
- Oracle 9i中表的線上重定義(轉)Oracle
- 使用DBMS_REDEFINITION線上重定義表普通表為分割槽表
- 線上重定義 ?普通錶轉換成分割槽表
- OCM實驗-使用線上重定義方式遷移表
- 海量資料處理_表分割槽(線上重定義)
- oracle 線上重組表Oracle
- 使用線上重定義方法改造普通表為分割槽表實戰
- 線上重定義表(Redefine Tables Online) - dbms_redefinition
- Online Redefinition線上重定義(三)--多表關聯重定義案例