SQL> @Create_newsales.sql
SQL>
SQL>
SQL> set echo off
SQL> drop table historical_newsales
  2  /
drop table historical_newsales
           *
1행에 오류:
ORA-00942: 테이블 또는 뷰가 존재하지 않습니다


SQL>
SQL> drop table newsales
  2  /
drop table newsales
           *
1행에 오류:
ORA-00942: 테이블 또는 뷰가 존재하지 않습니다


SQL>
SQL> -- create interval partitioned table
SQL> create table newsales
  2  ( prod_id number(6) not null
  3  , cust_id number not null
  4  , time_id date not null
  5  , channel_id char(1) not null
  6  , promo_id number(6) not null
  7  , quantity_sold number(3) not null
  8  , amount_sold number(10,2) not null
  9  )
 10  partition by range (time_id)
 11  interval (numtodsinterval(1,'DAY'))
 12  ( partition p_before_1_jan_2005 values
 13  less than (to_date('01-01-2005','dd-mm-yyyy')))
 14  /

테이블이 생성되었습니다.

SQL> @Query_dict_3.sql
SQL>
SQL> set pagesize 2000
SQL> set long 10000
SQL> set linesize 200
SQL> set feedback on
SQL> column partition_name format a25
SQL> column high_value format a85
SQL>
SQL> set echo on
SQL>
SQL> -- show partitions and partition boundaries for the interval partitioned table
SQL>
SQL> select partition_name, high_value
  2  from user_tab_partitions
  3  where table_name = 'NEWSALES'
  4  order by partition_position
  5  /

PARTITION_NAME            HIGH_VALUE
------------------------- -------------------------------------------------------------------------------------
P_BEFORE_1_JAN_2005       TO_DATE(' 2005-01-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')

1개의 행이 선택되었습니다.

SQL> @Insert_newsales.sql
SQL>
SQL> set echo off

1 개의 행이 만들어졌습니다.


1 개의 행이 만들어졌습니다.


1 개의 행이 만들어졌습니다.


1 개의 행이 만들어졌습니다.


1 개의 행이 만들어졌습니다.


1 개의 행이 만들어졌습니다.


1 개의 행이 만들어졌습니다.


1 개의 행이 만들어졌습니다.


1 개의 행이 만들어졌습니다.


1 개의 행이 만들어졌습니다.


커밋이 완료되었습니다.

SQL>
SQL> set echo off
SQL> set pagesize 2000
SQL> set long 10000
SQL> set linesize 200
SQL> set feedback on
SQL> column partition_name format a25
SQL> column high_value format a85
SQL>
SQL> set echo on
SQL>
SQL> -- see how new partitions were created
SQL> select partition_name, high_value
  2  from user_tab_partitions
  3  where table_name = 'NEWSALES'
  4  order by partition_position
  5  /

PARTITION_NAME            HIGH_VALUE
------------------------- -------------------------------------------------------------------------------------
P_BEFORE_1_JAN_2005       TO_DATE(' 2005-01-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')
SYS_P21                   TO_DATE(' 2005-01-02 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')
SYS_P22                   TO_DATE(' 2005-01-03 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')
SYS_P23                   TO_DATE(' 2005-01-06 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')
SYS_P24                   TO_DATE(' 2005-01-07 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')
SYS_P25                   TO_DATE(' 2005-01-10 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')
SYS_P26                   TO_DATE(' 2005-01-11 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')

7 개의 행이 선택되었습니다.

SQL> @create_hist_newsales.sql
SQL> set echo off
SQL>
SQL> -- create a range partitioned table, that will be migrated to interval partitioning
SQL> create table historical_newsales
  2  ( prod_id number(6) not null
  3  , cust_id number not null
  4  , time_id date not null
  5  , channel_id char(1) not null
  6  , promo_id number(6) not null
  7  , quantity_sold number(3) not null
  8  , amount_sold number(10,2) not null
  9  )
 10  partition by range (time_id)
 11  (partition p_previous_century values
 12  less than (to_date('01-JAN-2000','dd-MON-yyyy'))
 13  , partition p_2000 values less than (to_date('01-JAN-2001','dd-MON-yyyy'))
 14  , partition p_2001 values less than (to_date('01-JAN-2002','dd-MON-yyyy'))
 15  , partition p_2002 values less than (to_date('01-JAN-2003','dd-MON-yyyy'))
 16  , partition p_2003 values less than (to_date('01-JAN-2004','dd-MON-yyyy'))
 17  , partition p_2004 values less than (to_date('01-JAN-2005','dd-MON-yyyy'))
 18  , partition p_2005 values less than (to_date('01-JAN-2006','dd-MON-yyyy'))
 19  )
 20  /

테이블이 생성되었습니다.

SQL>
SQL> insert into historical_newsales
  2  values (11160,17450,to_date('02-jan-2006','dd-mon-yyyy'),'I',9999,19,798)
  3  /
insert into historical_newsales
            *
1행에 오류:
ORA-14400: 삽입된 분할 영역 키와 매핑되는 분할 영역이 없음


SQL>
SQL> alter table historical_newsales
  2  set interval (NUMTOYMINTERVAL(1, 'YEAR'))
  3  /

테이블이 변경되었습니다.

SQL>
SQL> insert into historical_newsales
  2  values (11160,17450,to_date('02-jan-2006','dd-mon-yyyy'),'I',9999,19,798)
  3  /

1 개의 행이 만들어졌습니다.

SQL>
SQL> commit
  2  /

커밋이 완료되었습니다.

SQL> select partition_name, high_value
  2  from user_tab_partitions
  3  where table_name = 'HISTORICAL_NEWSALES'
  4  order by partition_position;

PARTITION_NAME            HIGH_VALUE
------------------------- -------------------------------------------------------------------------------------
P_PREVIOUS_CENTURY        TO_DATE(' 2000-01-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')
P_2000                    TO_DATE(' 2001-01-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')
P_2001                    TO_DATE(' 2002-01-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')
P_2002                    TO_DATE(' 2003-01-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')
P_2003                    TO_DATE(' 2004-01-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')
P_2004                    TO_DATE(' 2005-01-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')
P_2005                    TO_DATE(' 2006-01-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')
SYS_P27                   TO_DATE(' 2007-01-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')

8 개의 행이 선택되었습니다.