oracle11g分割槽表按時間自動建立
阿新 • • 發佈:2019-01-04
首先來介紹下numtodsinterval和numtoyminterval兩個函式。 numtoyminterval和numtoyminterval是日期轉換函式,作用:可以將數字轉換成相應的日期單位時間 語法:NUMTOYMINTERVAL ( n , 'char_expr' ) char_expr:日期描述,可以是YEAR和MONTH。 通常當我們使用add_month新增月時,如果輸入是本月月底的日期,那麼得到的也是月底的日期,比如add_month(to_date('2007-02-28','yyyy-mm-dd'),1)得到的就會是'2007-03-31',而不是'2007-03-28'。 此時,如果使用的是to_date('2007-02-28','yyyy-mm-dd')+numtoyminterval(1,'month'),那麼得到的就是'2007-03-28'。 numtodsinterval的用法和numtoyminterval一樣只是他的引數為day、hour、minute、second。 Oracle 11g之前,維護分割槽需要手工。11g之後使用interval來實現自動擴充套件分割槽,簡化了維護。 根據年: INTERVAL(NUMTOYMINTERVAL(1,'YEAR')) 根據月: INTERVAL(NUMTOYMINTERVAL(1,'MONTH')) 根據天: INTERVAL(NUMTODSINTERVAL(1,'DAY')) 根據時分秒: NUMTODSINTERVAL( n, { 'DAY'|'HOUR'|'MINUTE'|'SECOND'})
create table tablenames (fid number not null PRIMARY KEY, sdate date,addr varchar2(1000))
partition by range (sdate) interval (numtoyMinterval (1,'MONTH'))
(
partition ptablenames values less than (to_date('2017-02-13', 'yyyy-mm-dd'))
)
建立完畢後通過如下sql進行查詢分割槽:
select partition_name from user_tab_partitions where table_name='tablenames';
新增不同年份的資料,就會發現會按照年自動生成對應分割槽。