在項目數據庫設計過程中由於單表的數據量非常龐大,需要對表進行分區處理。由於表中的數據是歷史交易,故按月分區,提升查詢和管理。
由於之前對於表分區了解不多,為了實現上述功能查了很多資料,一開始的方向是通過Crontab調用Shell腳本來按月自動創建分區,或者使用Oracle的Job調用存儲過程來自動創建分區。在研究上述兩套方案的過程中,無意發現Oracle11g有間隔分區功能,對於使用Range分區的可以按年,月,日來自動生成分區。語法如下:
CREAT TABLE TABLE1 ( TABLE_ID NUMBER(8), SUB_DATE DATE, VALUE NUMBER(8) ) PARTITION BY RANGE(SUB_DATE) INTERVAL(NUMTOYMINTERVAL(1,'MONTH')) ( PARTITION P1 VALUES LESS THAN(TO_DATE('2014-05-01','YYYY-MM-DD')) );
2014年5月1日前的數據會放入p1分區,5月1日後的數據每月只要有數據,就會自動創建一個分區。