使用dbms_redefinition包線上把大資料量非分割槽錶轉換為分割槽表
Oracle Database - Enterprise Edition - Version 11.2.0.2.0 以及以後的任何版本.
本文使用DBMS_REDEFINITION包提供了大量詳細的方法把普通表線上的轉換為分割槽表。
下面是詳細的操作步驟:
1. 建立一個臨時的分割槽表,表結構與要轉換的非分割槽表結構相同.
2. 執行 DBMS_REDEFINITION.can_redef_table...
3. 執行 DBMS_REDEFINITION.start_redef_table...
4. 執行 DBMS_REDEFINITION.sync_interim_table...
5. 執行 DBMS_REDEFINITION.finish_redef_table...
6. 刪除臨時的分割槽表 Drop the interim table.
詳細的操作步驟:
本實驗在 11.2.0.3平臺下做的。
-- 建立非分割槽表,並初始化資料.
a NUMBER, y number,
name VARCHAR2(100), date_used date);
-- 新增一主鍵
SQL>alter table unpar_table ADD (CONSTRAINT unpar_table_pk PRIMARY KEY (a,y));
-- 載入資料 1,000,000 行
SQL>begin
for i in 1 .. 1000
loop
for j in 1 .. 1000
loop
insert into unpar_table values ( i, j, dbms_random.random, sysdate-j );
end loop;
end loop;
end;
/
commit;
PL/SQL procedure successfully completed.
Elapsed: 00:01:56.90
Commit complete.
--收集統計資訊
SQL> EXEC DBMS_STATS.gather_table_stats(user, 'unpar_table', cascade => TRUE);
SQL>SELECT num_rows FROM user_tables WHERE table_name = 'UNPAR_TABLE';
NUM_ROWS
----------
1000000
Elapsed: 00:00:00.01
--建立分割槽表
SQL> CREATE TABLE par_table (
a NUMBER, y number,
name VARCHAR2(100),date_used DATE)
PARTITION BY RANGE (date_used)
(PARTITION unpar_table_12 VALUES LESS THAN (TO_DATE('10/07/2012', 'DD/MM/YYYY')),
PARTITION unpar_table_15 VALUES LESS THAN (TO_DATE('15/07/2012', 'DD/MM/YYYY')),
PARTITION unpar_table_MX VALUES LESS THAN (MAXVALUE));
SQL> EXEC Dbms_Redefinition.can_redef_table(USER, 'unpar_table');
PL/SQL procedure successfully completed.
Elapsed: 00:00:00.07
-- 這個儲存過程包 (DBMS_REDEFINITION.start_redef_table) 會建立一個物化檢視.
SQL> BEGIN
DBMS_REDEFINITION.start_redef_table(
uname => USER,
orig_table => 'unpar_table',
int_table => 'par_table');
END;
/
PL/SQL procedure successfully completed.
Elapsed: 00:00:06.69
SQL> select mview_name,container_name, build_mode from user_mviews;
MVIEW_NAME CONTAINER_NAME BUILD_MOD
------------------------------ ------------------------------ ---------
PAR_TABLE PAR_TABLE PREBUILT
Elapsed: 00:00:00.13
-- 當 DBMS_REDEF 為活動狀態是,我們向非分割槽表'unpar_table'插入1000資料.
-- 我們會使用到 DBMS_REDEFINITION.start_redef_table建立的物化檢視記錄更新的資訊.
-- 檢查物化檢視 MLOG$_
相關文章
- 將非分割槽錶轉換為分割槽表
- 將mysql非分割槽錶轉換為分割槽表MySql
- Oracle 12C新特性-線上把非分割槽錶轉為分割槽表Oracle
- 非分割槽錶轉換成分割槽表
- 將一個非分割槽錶轉換為分割槽表
- 非分割槽錶轉換為分割槽表和partition indexIndex
- 普通錶轉換為分割槽表
- 【分割槽】如何將一個普通錶轉換為分割槽表
- 將普通錶轉換為分割槽表
- 使用DBMS_REDEFINITION在事務處理過程中將一個非分割槽錶轉換為分割槽表
- 普通錶轉換分割槽表-線上重定義
- Oracle 將普通錶轉換為分割槽表Oracle
- 堆錶轉換成分割槽表
- 利用ORACLE DBMS_REDEFINITION包進行普通表到分割槽表的線上轉換Oracle
- 非分割槽錶轉換成分割槽表以及注意事項
- 分割槽表和dbms_redefinition包線上重定義表
- Oracle線上將普通錶轉分割槽表Oracle
- 線上重定義 ?普通錶轉換成分割槽表
- 使用DBMS_REDEFINITION線上重定義表普通表為分割槽表
- ORACLE 11g 範圍分割槽錶轉換INTERVAL分割槽表Oracle
- dbms_redefinition利用線上重定義把普通錶轉化為分割槽表的一些測試
- ORACLE 普通錶轉換成分割槽表(線上重定義)Oracle
- ORACLE 普通錶轉換成分割槽表(線上重定義)(zt)Oracle
- 批次轉換分割槽表為普通表
- 批量轉換分割槽表為普通表
- 利用線上重定義功能將普通錶轉換為分割槽表問題
- ORACLE普通錶轉換成分割槽表的操作Oracle
- 大資料量分割槽表統計資訊的管理大資料
- 線上表格重定義研究,比如將普通錶轉換為分割槽表等
- Oracle 12.2之後ALTER TABLE .. MODIFY轉換非分割槽表為分割槽表Oracle
- MySQL 分割槽表 partition線上修改分割槽欄位MySql
- ORACLE將普通錶轉變為分割槽表方法Oracle
- 普通錶轉換成分割槽表的四種方法
- 使用split對分割槽表再分割槽
- Oracle Database將普通錶轉換為分割槽表遇到的問題OracleDatabase
- 線上重定義的操作步驟__普通錶轉換為分割槽表的實驗案例
- 分割槽表大物件物件
- oracle分割槽表和分割槽表exchangeOracle