ORACLE建立分割槽表及分割槽表的資料遷移

2021-09-01 19:39:53 字數 1420 閱讀 3352

對於目前資料量較大的表,report_ap_stat_hour(2個月有1900萬),client_offline_history(2個月有4800萬),如果儲存超過一年資料將達數億,對這種級別的資料索引優化已經達不到要求的(15秒之內完成查詢),因此需要進行按月分表,使用oracle11g的新特性interval按月進行自動分表。

分割槽表建表語句如下:

create table client_offline_history_in(

"client_offline_id" number(20) not null ,

"ap_id" number(20) null ,

constraint "pk_client_interval" primary key ("client_offline_id")

)partition by range (create_time)

interval ( numtoyminterval (1, 'month') )

(partition part1

values less than (to_date ('2013-08-01', 'yyyy-mm-dd')))

由於oracle不能直接將表修改為分割槽表,對於已經部署的系統需要先將分割槽表建立,然後將老表中的資料遷移至分割槽表。

普通表與分割槽表之間的資料遷移目前有三種方案:

(1)       使用insert into select 語句,速度較慢

insert into client_offline_history_in select * from client_offline_history
(2)       使用expdp/impdp工具,速度較快

檢視目錄:

select * from dba_directories;
建立dir dba許可權:

create directory dpdata as '/home/oracle/dump';
執行匯出語句

expdp wlan/wlan1o2o dumpfile=history.dmp tables=client_offline_history  directory=dpdata
執行匯入語句

(3)       使用交換分割槽速度最快,原理遷移不做任何的io操作只是更改資料字典,限制條件是普通表內資料必須符合分割槽中的乙個分割槽

alter table test_interval_par exchange partition part1 with table test_interval without validation;
具體使用的時候可以根據實際需要進行相應的遷移操作。

Oracle 建立分割槽表

建立表空間 create tablespace mytablespace 1 datafile c oracle product 10.1.0 oradata mydata mytablespace1.dbf size 100m extent management local uniform siz...

Oracle 建立分割槽表

建立表空間 create tablespace mytablespace 1 datafile c oracle product 10.1.0 oradata mydata mytablespace1.dbf size 100m extent management local uniform siz...

Oracle 建立分割槽表

create table 建立表 create table testtable id integer not null,name nvarchar2 100 not null,insertedtime date not null 同時建立分割槽表 partition by range inserte...