Vous êtes sur la page 1sur 11

Composite partitioning Range-Hash create table emp_sub ( deptno number, empname varchar(32), grade number ) partition by range(deptno) subpartition

by hash(empname) subpartition template ( subpartition sa, subpartition sb, subpartition sc, subpartition sd ) ( partition p1 values less than (1000), partition p2 values less than (2000), partition p3 values less than (maxvalue) ); desc emp_sub; Name DEPTNO EMPNAME GRADE Type NUMBER VARCHAR2 NUMBER Null?

insert into emp_sub values (100, 'Krutik', 1); insert into emp_sub values (500, 'Akshai', 1); insert into emp_sub values (1001, 'Akshay', 1); insert into emp_sub values (1500, 'Aniket', 1); insert into emp_sub values (2005, 'Vivek', 1); begin dbms_stats.gather_table_stats(ownname=>'sys', tabname=>'EMP_SUB',granularity=>'ALL'); end;

select partition_name, subpartition_name, num_rows from user_tab_subpartitions where table_name='EMP_SUB'; PARTITION_NAME P1 P1 P1 P1 P2 P2 P2 P2 P3 P3 P3 P3 SUBPARTITION_NAME P1_SA P1_SB P1_SC P1_SD P2_SA P2_SB P2_SC P2_SD P3_SA P3_SB P3_SC P3_SD NUM_ROWS 0 0 2 0 0 2 0 0 0 0 0 1

Composite Partitioning Range-List create table emp_data ( first_name varchar2(10), birth_mm int, birth_dd int, birth_yyyy int, state varchar2(2) ) partition by range(birth_yyyy) subpartition by list (state) subpartition template ( subpartition s1 values ('mh','ga'), subpartition s2 values ('tn','kr'), subpartition s3 values ('rj','gj'), subpartition s4 values (default) ) ( partition p1 values less than (1985), partition p2 values less than (1995), partition p3 values less than (2005), partition p4 values less than (MAXVALUE) ) enable row movement; desc emp_data; Name FIRST_NAME BIRTH_MM BIRTH_DD BIRTH_YYYY STATE Type VARCHAR2 NUMBER NUMBER NUMBER VARCHAR2 Null?

insert into emp_data values ('krutik',03,07,1990,'mh'); insert into emp_data values ('akshai',04,07,1989,'tn'); insert into emp_data values ('akshay',11,10,1990,'mh'); insert into emp_data values ('vivek',05,07,2006,'rj');

insert into emp_data values ('aniket',09,02,1965,'ga'); begin dbms_stats.gather_table_stats(ownname=>'sys', tabname=>'EMP_DATA',granularity=>'ALL'); end; PARTITION_NAME P1 P1 P1 P1 P2 P2 P2 P2 P3 P3 P3 P3 P4 P4 P4 P4 SUBPARTITION_NAME P1_S4 P1_S3 P1_S2 P1_S1 P2_S4 P2_S3 P2_S2 P2_S1 P3_S4 P3_S3 P3_S2 P3_S1 P4_S4 P4_S3 P4_S2 P4_S1 NUM_ROWS 0 0 0 1 0 0 1 2 0 0 0 0 0 1 0 0

Composite Partitioning List-Range create table emp_data1 ( first_name varchar2(10), yyyy int, state varchar2(2) ) partition by list(state) subpartition by range(yyyy) subpartition template ( subpartition s1 values less than (1980), subpartition s2 values less than (1995), subpartition s3 values less than (2005), subpartition s4 values less than (maxvalue) ) ( partition p1 values ('mh','ga'), partition p2 values ('kr','tn'), partition p3 values ('rj','wb'), partition p4 values (default) ) enable row movement; desc emp_data1; Name FIRST_NAME YYYY STATE Type VARCHAR2 NUMBER VARCHAR2 Null?

insert into emp_data1 values ('krutik',1990,'mh'); insert into emp_data1 values ('akshai',1989,'tn'); insert into emp_data1 values ('akshay',1990,'mh'); insert into emp_data1 values ('vivek',2006,'rj'); insert into emp_data1 values ('aniket',1965,'ga'); begin

dbms_stats.gather_table_stats(ownname=>'sys', tabname=>'EMP_DATA1',granularity=>'ALL'); end; select partition_name, subpartition_name, num_rows from user_tab_subpartitions where table_name='EMP_DATA1'; PARTITION_NAME P1 P1 P1 P1 P2 P2 P2 P2 P3 P3 P3 P3 P4 P4 P4 P4 SUBPARTITION_NAME P1_S4 P1_S3 P1_S2 P1_S1 P2_S4 P2_S3 P2_S2 P2_S1 P3_S4 P3_S3 P3_S2 P3_S1 P4_S4 P4_S3 P4_S2 P4_S1 NUM_ROWS 0 0 1 2 0 0 1 0 1 0 0 0 0 0 0 0

System partitioning create table sys_part_sample ( tab_id int, tab_desc varchar2(10), tab_date date ) partition by system ( partition p1, partition p2 ); insert into sys_part_sample partition(p1) values(2,'abc','12-jan-2013'); insert into sys_part_sample partition(p1) values(1,'def','12-mar-2013'); insert into sys_part_sample partition(p2) values(2,'xyz','15-apr-2013'); insert into sys_part_sample partition(p1) values(1,'abcdef','06-may-2013'); insert into sys_part_sample partition(p2) values(4,'lmno','09-sep-2013'); begin dbms_stats.gather_table_stats(ownname=>'sys', tabname=>'SYS_PART_SAMPLE'); end; select partition_name, num_rows from user_tab_partitions where table_name='SYS_PART_SAMPLE'; PARTITION_NAME P1 P2 NUM_ROWS 3 2

Reference partitioning create table class_tab ( name_id int not null, class_name varchar2(10), quan int, constraint ctpk primary key(name_id) ) partition by list(name_id) ( partition p1 values(1), partition p2 values(2), partition p3 values(default) ) enable row movement; create table student_tab ( name_stud varchar2(10), roll int not null, class_id int not null, constraint stpk primary key(roll), constraint stfk foreign key(class_id) references class_tab(name_id) ) partition by reference(stfk) enable row movement; insert into class_tab values (1,'adt',60); insert into class_tab values (2, 'C++',45); insert into student_tab values ('krutik', 202, 1); insert into student_tab values ('akshai', 201, 1); insert into student_tab values ('vivek', 203, 2); insert into student_tab values ('akshay', 231, 2); insert into student_tab values ('aniket', 232, 2); insert into student_tab values ('surjit', 226, 1); begin dbms_stats.gather_table_stats(ownname=>'sys', tabname=>'CLASS_TAB'); end;

begin dbms_stats.gather_table_stats(ownname=>'sys', tabname=>'STUDENT_TAB'); end; select table_name, partition_name, num_rows from user_tab_partitions where table_name='STUDENT_TAB' or table_name='CLASS_TAB'; TABLE_NAME CLASS_TAB CLASS_TAB CLASS_TAB STUDENT_TAB STUDENT_TAB STUDENT_TAB PARTITION_NAME P1 P2 P3 P1 P2 P3 NUM_ROWS 1 1 0 3 3 0

Virtual column partitioning create table payroll ( empname varchar2(10), sal int, yearly_sal int as (sal*12) virtual ) partition by range(yearly_sal) ( partition p1 values less than (600000), partition p2 values less than (1200000), partition p3 values less than (MAXVALUE) ) enable row movement; insert into payroll(empname,sal) values ('krutik', 78500); insert into payroll(empname,sal) values ('akshay', 266666); insert into payroll(empname,sal) values ('akshai', 75000); insert into payroll(empname,sal) values ('nobita', 25000); insert into payroll(empname,sal) values ('shinsuke', 33333); select * from payroll; EMPNAME nobita shinsuke krutik akshai akshay begin dbms_stats.gather_table_stats(ownname=>'sys', tabname=>'PAYROLL'); end; select table_name, partition_name, num_rows from user_tab_partitions where table_name='PAYROLL'; TABLE_NAME PAYROLL PAYROLL PAYROLL PARTITION_NAME P1 P2 P3 NUM_ROWS 2 2 1 SAL 25000 33333 78500 75000 266666 YEARLY_SAL 300000 399996 942000 900000 3199992

Vous aimerez peut-être aussi