將非分割槽錶轉換為分割槽表
很多資料庫在設計時未能很好的規劃資料庫的容量, 導致在某些情況下, 導致一個表中存放了數百萬, 數千萬甚至上億條記錄, 維護起來非常的不便, 下面介紹一種將非分割槽錶轉換為分割槽表的方法.[@more@]testtb_nopart是一個非分割槽表, 基本資訊如下:
建立分割槽表testtb_part, 結構和testtb_nopart一致.
交換testtb_nopart和testtb_part中part分割槽的資料
testtb_nopart中大約有50萬條記錄, 佔用600m左右空間, 交換大約用了不到30秒鐘, testtb_part和testtb_nopart所在的表空間也沒有明顯增長.
對rest分割槽進行拆分
最後可以重新命名錶, 使得轉換過程不影響使用者程式.
SQL> desc testtb_nopart Name Null? Type ----------------------------------------- -------- ---------------------------- TIMESTAMP DATE OWNER VARCHAR2(30) ACTION VARCHAR2(6) OBJECT_NAME VARCHAR2(128) MESSENG VARCHAR2(169) SQL> select to_char(timestamp, 'mm-yyyy'), count(*) from testtb_nopart group by to_char(timestamp, 'mm-yyyy'); TO_CHAR COUNT(*) ------- ---------- 12-2005 2058125 11-2005 1363431 08-2005 150951 10-2005 628149 07-2005 1006340 09-2005 730410 6 rows selected. |
建立分割槽表testtb_part, 結構和testtb_nopart一致.
create table testtb_part (timestamp date, owner varchar2(30), action varchar2(6), object_name varchar2(128) , messeng varchar2(169)) tablespace testts partition by range(timestamp)( partition rest values less than (maxvalue)) |
交換testtb_nopart和testtb_part中part分割槽的資料
SQL> alter table testtb_part exchange partition rest with table testtb_nopart; Table altered. SQL> select to_char(timestamp, 'mm-yyyy'), count(*) from testtb_nopart group by to_char(timestamp, 'mm-yyyy'); no rows selected SQL> c/nopart/part/ 1* select to_char(timestamp, 'mm-yyyy'), count(*) from testtb_part group by to_char(timestamp, 'mm-yyyy') SQL> / TO_CHAR COUNT(*) ------- ---------- 12-2005 2058125 11-2005 1363431 08-2005 150951 10-2005 628149 07-2005 1006340 09-2005 730410 6 rows selected. |
testtb_nopart中大約有50萬條記錄, 佔用600m左右空間, 交換大約用了不到30秒鐘, testtb_part和testtb_nopart所在的表空間也沒有明顯增長.
對rest分割槽進行拆分
SQL> alter table testtb_part split partition rest at (to_date('200508','yyyymm')) 2 into (partition part08, partition rest); Table altered. SQL> alter table testtb_part split partition rest at (to_date('200509','yyyymm')) 2 into (partition part08, partition rest); Table altered. SQL> alter table testtb_part split partition rest at (to_date('200510','yyyymm')) 2 into (partition part09, partition rest); Table altered. SQL> alter table testtb_part split partition rest at (to_date('200511','yyyymm')) 2 into (partition part10, partition rest); Table altered. SQL> alter table testtb_part split partition rest at (to_date('200512','yyyymm')) 2 into (partition part11, partition rest); Table altered. SQL> alter table testtb_part split partition rest at (to_date('200601','yyyymm')) 2 into (partition part12, partition rest); Table altered. |
最後可以重新命名錶, 使得轉換過程不影響使用者程式.
alter table testtb_part rename to testtb_nopart |
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/262387/viewspace-865781/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 將mysql非分割槽錶轉換為分割槽表MySql
- 將一個非分割槽錶轉換為分割槽表
- 【分割槽】如何將一個普通錶轉換為分割槽表
- 將普通錶轉換為分割槽表
- Oracle 將普通錶轉換為分割槽表Oracle
- 非分割槽錶轉換成分割槽表
- 非分割槽錶轉換為分割槽表和partition indexIndex
- 普通錶轉換為分割槽表
- 堆錶轉換成分割槽表
- 非分割槽錶轉換成分割槽表以及注意事項
- ORACLE 11g 範圍分割槽錶轉換INTERVAL分割槽表Oracle
- ORACLE將普通錶轉變為分割槽表方法Oracle
- Oracle線上將普通錶轉分割槽表Oracle
- Oracle Database將普通錶轉換為分割槽表遇到的問題OracleDatabase
- 使用dbms_redefinition包線上把大資料量非分割槽錶轉換為分割槽表大資料
- 批次轉換分割槽表為普通表
- 批量轉換分割槽表為普通表
- Oracle 12C新特性-線上把非分割槽錶轉為分割槽表Oracle
- 使用DBMS_REDEFINITION在事務處理過程中將一個非分割槽錶轉換為分割槽表
- ORACLE普通錶轉換成分割槽表的操作Oracle
- 普通錶轉換分割槽表-線上重定義
- 利用線上重定義功能將普通錶轉換為分割槽表問題
- Oracle 12.2之後ALTER TABLE .. MODIFY轉換非分割槽表為分割槽表Oracle
- 線上重定義 ?普通錶轉換成分割槽表
- 普通錶轉換成分割槽表的四種方法
- oracle將表配置為分割槽表Oracle
- 線上表格重定義研究,比如將普通錶轉換為分割槽表等
- ORACLE 普通錶轉換成分割槽表(線上重定義)Oracle
- ORACLE將不同表改為分割槽表Oracle
- oracle分割槽表和分割槽表exchangeOracle
- 高手幫忙,超大普通錶轉分割槽表?
- 【ASK_ORACLE】使用insert語句將普通錶轉換成分割槽表Oracle
- 【實驗】【PARTITION】RANGE分割槽表重新命名錶分割槽(Rename Partition)
- 全面學習分割槽表及分割槽索引(13)--分隔表分割槽索引
- Oracle分割槽表及分割槽索引Oracle索引
- INTERVAL分割槽表鎖分割槽操作
- 如何查詢分割槽表的分割槽及子分割槽
- ORACLE 普通錶轉換成分割槽表(線上重定義)(zt)Oracle