海量資料處理_表分割槽(線上重定義)
使用線上重定義方式將表分割槽
1,許可權:
execute_catalog_role:execute on dbms_redefinition
create any table
alter any table
drop any table
lock any table
select any table
2,確定是否可以重定義
BEGIN
dbms_redefinition.can_redef_table(uname => USER,
tname => 'ACT_LOG',
options_flag => dbms_redefinition.cons_use_rowid,
part_name => NULL);
END;
/
3,建立臨時表
create table ACT_LOG_PART
(
USER_ID INTEGER not null,
ACTION_DATE TIMESTAMP(6) not null,
TYPE VARCHAR2(50 BYTE) not null,
DETAIL VARCHAR2(4000 BYTE) not null,
CHNL VARCHAR2(1 BYTE) default '1'
) partition by range(action_date)(
partition p200909 values less than (to_date('20091001','YYYYMMDD')),
partition p201011 values less than (to_date('20101201','YYYYMMDD')),
partition p201201 values less than (to_date('20120201','YYYYMMDD')),
partition p201202 values less than (to_date('20120301','YYYYMMDD')),
partition p201203 values less than (to_date('20120401','YYYYMMDD')),
partition p201204 values less than (to_date('20120501','YYYYMMDD')),
partition p201205 values less than (to_date('20120601','YYYYMMDD')),
partition p201206 values less than (to_date('20120701','YYYYMMDD')),
partition p201207 values less than (to_date('20120801','YYYYMMDD')),
partition p201210 values less than (to_date('20121101','YYYYMMDD')),
partition p201211 values less than (to_date('20121201','YYYYMMDD')),
partition p201212 values less than (to_date('20130101','YYYYMMDD')),
partition p201303 values less than (to_date('20130401','YYYYMMDD')),
partition p201410 values less than (to_date('20141101','YYYYMMDD')),
partition p201412 values less than (to_date('20150101','YYYYMMDD')),
partition p201506 values less than (to_date('20150701','YYYYMMDD')),
partition p201507 values less than (to_date('20150801','YYYYMMDD')),
partition p201508 values less than (to_date('20150901','YYYYMMDD')),
partition p201509 values less than (to_date('20151001','YYYYMMDD')),
partition p201510 values less than (to_date('20151101','YYYYMMDD')),
partition p201601 values less than (to_date('20160201','YYYYMMDD')),
partition p201602 values less than (to_date('20160301','YYYYMMDD')),
partition p201604 values less than (to_date('20160501','YYYYMMDD')),
partition pmax values less than (maxvalue)
);
4,開始重定義
alter session force parallel dml parallel 4;
alter session force parallel ddl parallel 4;
BEGIN
dbms_redefinition.start_redef_table(uname => USER,
orig_table => 'ACT_LOG',
int_table => 'ACT_LOG_PART',
col_mapping => NULL,
options_flag => dbms_redefinition.cons_use_rowid,
orderby_cols => NULL,
part_name => NULL);
END;
/
5,建立索引
--create index
create index IDX_ACT_LOG_USERID_DATE on ACT_LOG_PART (USER_ID, ACTION_DATE) local;
6,同步
alter session disable parallel dml;
alter session disable parallel ddl;
BEGIN
dbms_redefinition.sync_interim_table(uname => USER,
orig_table => 'ACT_LOG',
int_table => 'ACT_LOG_PART',
part_name => NULL);
END;
/
7,完成
BEGIN
dbms_redefinition.finish_redef_table(uname => USER,
orig_table => 'ACT_LOG',
int_table => 'ACT_LOG_PART',
part_name => NULL);
END;
/
8,刪除臨時表
rename act_log_part to act_log_bak;
9,分析
begin
dbms_stats.gather_table_stats(ownname => user,tabname => 'ACT_LOG');
end;
/
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/18922393/viewspace-696993/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 海量資料處理_表分割槽
- 普通錶轉換分割槽表-線上重定義
- ORACLE 線上重新定義表分割槽表重定義為普通表。Oracle
- 海量資料處理_表分割槽(分割槽自動維護與歷史分割槽歸檔)
- 分割槽表和dbms_redefinition包線上重定義表
- 線上重定義 ?普通錶轉換成分割槽表
- 線上重定義分割槽表和NOLOGGING APPEND分割槽表對比APP
- 使用ORACLE線上重定義將普通表改為分割槽表Oracle
- 使用DBMS_REDEFINITION線上重定義表普通表為分割槽表
- oracle分割槽表線上重定義欄位not null問題OracleNull
- ORACLE 普通錶轉換成分割槽表(線上重定義)Oracle
- 使用線上重定義方法改造普通表為分割槽表實戰
- ORACLE 普通錶轉換成分割槽表(線上重定義)(zt)Oracle
- 【Oracle】利用線上重定義的方式改變普通表為分割槽表Oracle
- 指令碼:線上重定義,從普通表到分割槽表,redefinition_table.sh指令碼
- 資料庫表的線上重定義資料庫
- 10g線上重定義新特性——對單獨的分割槽進行線上重定義
- 利用線上重定義功能將普通錶轉換為分割槽表問題
- 線上表格重定義研究,比如將普通錶轉換為分割槽表等
- 分割槽表truncate慢處理
- oracle 表線上重定義Oracle
- oracle表線上重定義Oracle
- 【Oracle】線上重定義表Oracle
- oracle 線上重新定義,普通表改變分割槽表,分割槽表可以更改型別、分割槽欄位等Oracle型別
- 線上重定義的操作步驟__普通錶轉換為分割槽表的實驗案例
- 海量資料處理_刪除重複行
- 海量資料處理
- 分割槽表split操作及maxvalue處理
- 海量資料處理_表結構變更
- ogg環境線上重定義普通表到分割槽表實戰及生產操作注意事項-orastarAST
- MySQL分表後原分割槽表處理方案MySql
- MySQL 分割槽表 partition線上修改分割槽欄位MySql
- Oracle表的線上重定義(一)Oracle
- oracle線上重定義表步驟Oracle
- dbms_redefinition線上重定義表
- 海量資料遷移之分割槽表批次insert效能改進
- 海量資料遷移之分割槽表批量insert效能改進
- Oracle使用聯機重定義來給表增加新列與分割槽Oracle