oracle分割槽拆分

2021-07-14 12:14:32 字數 1380 閱讀 8053



將分割槽表中的某乙個分割槽拆分成兩個分割槽 2008-08-14 14:47:17

分類: linux

我的庫中有乙個分割槽表,如下

create table scott.par_test

(id    number,

time  date

)partition by range (time)

(  partition p_080813 values less than (to_date(' 2008-08-14 00:00:00', 'syyyy-mm-dd hh24:mi:ss')),

partition p_080814 values less than (to_date(' 2008-08-15 00:00:00', 'syyyy-mm-dd hh24:mi:ss'))

)每乙個分割槽存放當天的資料,然後在每天的23點,去建立第二天的分割槽。建立分割槽的語句如下

declare

sqlstring varchar2(1000);

begin

sqlstring:='alter table par_test add partition p_'||to_char(date_now+1,'yymmdd')||' values less than (to_date('''||to_char(date_now+2,'yyyy-mm-dd')||' 00:00:00'',''syyyy-mm-dd hh24:mi:ss''))';

execute immediate sqlstring;

end;

/由於系統時間的問題,p_080815沒有建立,而直接建立了p_080816,並且已經有大量15號的資料入庫。

現在想補建15號的分割槽。可是不能直接用

alter table par_test add partition p_080815 valuse less than (to_date(to_date(' 2008-08-16 00:00:00', 'syyyy-mm-dd hh24:mi:ss')))

來執行,因為分割槽的時間範圍有了衝突。 所以利用 split partition 方法將p_080816分割槽分割成兩個分割槽。方法如下

alter table par_test split partition p_080816

at (to_date(' 2008-08-15 00:00:00', 'syyyy-mm-dd hh24:mi:ss'))

into (partition p_080815,partition p_080816);

at 只能用在range型別的分割槽,()中的值表示第乙個分割槽的upper value。

如果是list型別的分割槽,用values 關鍵字()中指定新的第乙個分割槽的值。語法圖如下

注:乙個分割槽一次性只能分成兩個分割槽。

ORACLE 分割槽表分割槽拆分

oracle建立分割槽表,分割槽規則為按照日期進行分割槽,由於投產日期未知,因此建議使用按照當前日期自動建立分割槽。僅需建立乙個max分割槽,然後通過split進行分割槽拆分,建立一年前的全部分割槽。示例 如下 create table wen dt decimal 8,0 id decimal 1...

資料庫水平拆分和垂直拆分區別

size medium size x small color blue 資料庫水平拆分和垂直拆分區別 案例 簡單購物系統暫設涉及如下表 1.產品表 資料量10w,穩定 2.訂單表 資料量200w,且有增長趨勢 3.使用者表 資料量100w,且有增長趨勢 以mysql為例講述下水平拆分和垂直拆分,my...

資料庫水平拆分和垂直拆分區別

案例 簡單購物 系統暫設涉及如下表 1.產品表 資料量10w,穩定 2.訂單表 資料量200w,且有增長趨勢 3.使用者表 資料量100w,且有增長趨勢 以mysql為例講述下水平拆分和垂直拆分,mysql能容忍的數量級在百萬靜態資料可以到千萬 垂直拆分 解決問題 表與表之間的io競爭 不解決問題 ...