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 개의 행이 선택되었습니다.