將一個非分割槽錶轉換為分割槽表
/*
功能:
將一個非分割槽錶轉換為分割槽表
基本思路:
SST_DAY_TOTAL是(資料量上百萬條,列比較多)一個非分割槽表,此時建立一個與SST_DAY_TOTAL同結構的分割槽表zhaozhenlong_partition,維護資料,
刪除SST_DAY_TOTAL表,將zhaozhenlong_partition更名為SST_DAY_TOTA,刪除zhaozhenlong_partition
*/
--具體步驟:
--1、查詢非分割槽表資料
select to_char(rpt_date, 'yyyymm'), count(*) from SST_DAY_TOTAL group by to_char(rpt_date, 'yyyymm') order by to_char(RPT_DATE, 'yyyymm');
--2、建立分割槽表(結構和非分割槽表SST_DAY_TOTAL相同)
create table zhaozhenlong_partition
(
GAS_ID VARCHAR2(12) not null,
RPT_DATE DATE not null,
INV_NO VARCHAR2(12),
......
)
tablespace sdlg
partition by range(rpt_date)(
partition rest values less than (maxvalue))
--3、交換資料(資料從非分割槽表到分割槽表)
alter table zhaozhenlong_partition exchange partition rest with table SST_DAY_TOTAL;
--4、查詢分割槽表資料
select to_char(RPT_DATE, 'mm-yyyy'), count(*) from SST_DAY_TOTAL group by to_char(RPT_DATE, 'mm-yyyy');
--輔助指令碼
/*
select 'alter table zhaozhenlong_partition split partition rest at (to_date('''
|| to_char(RPT_DATE, 'yyyymm') ||''',''yyyymm'')) into (partition p'
|| to_char(RPT_DATE, 'yyyymm')
|| ', partition rest);'
from zhaozhenlong_partition
group by to_char(RPT_DATE, 'yyyymm')
order by to_char(RPT_DATE, 'yyyymm')
*/
--5、對rest分割槽進行拆分
alter table zhaozhenlong_partition split partition rest at (to_date('200608','yyyymm')) into (partition p200608, partition rest);
alter table zhaozhenlong_partition split partition rest at (to_date('200609','yyyymm')) into (partition p200609, partition rest);
alter table zhaozhenlong_partition split partition rest at (to_date('200610','yyyymm')) into (partition p200610, partition rest);
alter table zhaozhenlong_partition split partition rest at (to_date('200611','yyyymm')) into (partition p200611, partition rest);
alter table zhaozhenlong_partition split partition rest at (to_date('200612','yyyymm')) into (partition p200612, partition rest);
--6、刪除非分割槽表
drop table SST_DAY_TOTAL
--7、將分割槽表重新命名為原非分割槽表名
alter table zhaozhenlong_partition rename to SST_DAY_TOTAL
--8、刪除中間處理過程的分割槽表
drop table zhaozhenlong_partition
________________________________
--補充
如果已存在分割槽表,要將某未分割槽表(與已分割槽表結構完全相同)加入到分割槽中:
alter table SST_DAY_TOTAL exchange partition p200608 with table zhaozhenlong_1;
alter table SST_DAY_TOTAL exchange partition p200609 with table zhaozhenlong_2;
如果zhaozhenlong_2不符合分割槽規則,則會報錯,則需要指定without validation 來禁止檢查
alter table SST_DAY_TOTAL exchange partition p200609 with table zhaozhenlong_2 without validation;
當然,如果你確認zhaozhenlong_1表中的資料是符合分割槽規則的,那指定without validation 之後,不會對zhaozhenlong_1進行全表掃描,
則會縮短exchange時間
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/35489/viewspace-417534/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【分割槽】如何將一個普通錶轉換為分割槽表
- 將非分割槽錶轉換為分割槽表
- 將mysql非分割槽錶轉換為分割槽表MySql
- 將普通錶轉換為分割槽表
- Oracle 將普通錶轉換為分割槽表Oracle
- 非分割槽錶轉換成分割槽表
- 非分割槽錶轉換為分割槽表和partition indexIndex
- 普通錶轉換為分割槽表
- 堆錶轉換成分割槽表
- 非分割槽錶轉換成分割槽表以及注意事項
- 使用DBMS_REDEFINITION在事務處理過程中將一個非分割槽錶轉換為分割槽表
- ORACLE 11g 範圍分割槽錶轉換INTERVAL分割槽表Oracle
- ORACLE將普通錶轉變為分割槽表方法Oracle
- Oracle線上將普通錶轉分割槽表Oracle
- Oracle Database將普通錶轉換為分割槽表遇到的問題OracleDatabase
- 使用dbms_redefinition包線上把大資料量非分割槽錶轉換為分割槽表大資料
- 批次轉換分割槽表為普通表
- 批量轉換分割槽表為普通表
- Oracle 12C新特性-線上把非分割槽錶轉為分割槽表Oracle
- 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查詢分割槽表的最後一個分割槽值Oracle