SQL> drop table t_range purge;
SQL> create table t_range (id number not null PRIMARY KEY, test_date date) partition by range (test_date)
(
partition p_2014_7 values less than (to_date(‘2014-08-01‘, ‘yyyy-mm-dd‘)),
partition p_2014_8 values less than (to_date(‘2014-09-01‘, ‘yyyy-mm-dd‘)),
partition p_2014_9 values less than (to_date(‘2014-10-01‘, ‘yyyy-mm-dd‘)),
partition p_2014_10 values less than (to_date(‘2014-11-01‘, ‘yyyy-mm-dd‘)),
partition p_2014_11 values less than (to_date(‘2014-12-01‘, ‘yyyy-mm-dd‘)),
partition p_2014_12 values less than (to_date(‘2015-01-01‘, ‘yyyy-mm-dd‘)),
partition p_max values less than (MAXVALUE)
) nologging;
SQL> insert /+append/ into t_range select rownum,
to_date(to_char(sysdate - 120, ‘J‘) +
trunc(dbms_random.value(0, 120)),
‘J‘)
from dual
connect by level &