Table partition | How to do Table Partitioning in Oracle with Example
in this blog i have explain Table partition | How to do Table Partitioning in Oracle with Example
oracle configurationintermediate
by OracleDba
12 views
in this blog i have explain Table partition | How to do Table Partitioning in Oracle with Example
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329
Create table Tablename
(Column_name1 datatype(size)….
Column_name-n datatype(size))
Partition by range(Column needs to be partitioned)
(Partition partition_name1 values less than(value1)….
Partition partition_name-n values less than(maxvalue));
Create table Employee(emp_no number(2),
Salary number)
partition by range(Salary)
(partition p1 values less than(10000),
partition p2 values less than(20000),
partition p3 values less than(30000),
partition p4 values less than(maxvalue));
SQL> Create table Employee(emp_no number(2),
Salary number)
partition by range(Salary)
(partition p1 values less than(10000),
partition p2 values less than(20000),
partition p3 values less than(30000),
partition p4 values less than(maxvalue)); 2 3 4 5 6 7
Table created.
Insert into Employee
values(1,40000);
Value inserted in partition p4 which is maximum value.
Insert into Employee
values(2,11000);
Value inserted in partition p2.
Insert into Employee
values(3,25000);
Value inserted in partition p3.
SQL> Insert into Employee
values(1,40000); 2
1 row created.
SQL> Insert into Employee
values(2,11000); 2
1 row created.
SQL> Insert into Employee
values(3,25000); 2
1 row created.
1.Selecting records from partitioned tables.
Select * from Employee;
SQL> Select * from Employee order by 1;
EMP_NO SALARY
---------- ----------
1 40000
2 11000
3 25000
SQL>
Select * from Employee partition(p4);
SQL> Select * from Employee partition(p4);
EMP_NO SALARY
---------- ----------
1 40000
SQL> set linesize 200
SQL> set pagesize 200
col table_name format a15
SQL> select TABLE_NAME , PARTITIONING_TYPE from
user_part_tables
2 where TABLE_NAME ='EMPLOYEE';
TABLE_NAME PARTITION
--------------- ---------
EMPLOYEE RANGE
To see on partition level partitioning information
select * from user_tab_partitions;
Alter table Employee
add partition p5 values less than(50000);
col partition_name format a15
SQL> SELECT TABLE_NAME,PARTITION_NAME, PARTITION_POSITION, HIGH_VALUE FROM USER_TAB_PARTITIONS WHERE TABLE_NAME ='EMPLOYEE';
SQL> col partition_name format a15
SQL> /
TABLE_NAME PARTITION_NAME PARTITION_POSITION HIGH_VALUE
--------------- - -------------- ------------------ ----------------------------------- ---------------------------------------------
EMPLOYEE P1 1 10000
EMPLOYEE P2 2 20000
EMPLOYEE P3 3 30000
EMPLOYEE P4 4 MAXVALUE
SQL> Alter table Employee
drop partition p1; 2
Table altered.
SQL> SELECT TABLE_NAME,PARTITION_NAME, PARTITION_POSITION, HIGH_VALUE FROM USER_TAB_PARTITIONS WHERE TABLE_NAME ='EMPLOYEE';
TABLE_NAME PARTITION_NAME PARTITION_POSITION HIGH_VALUE
--------------- --------------- ------------------ -----------------------------------------------------
EMPLOYEE P2 1 20000
EMPLOYEE P3 2 30000
EMPLOYEE P4 3 MAXVALUE
SQL> Alter table Employee
Rename partition p2 to p6; 2
Table altered.
SQL> SELECT TABLE_NAME,PARTITION_NAME, PARTITION_POSITION, HIGH_VALUE FROM USER_TAB_PARTITIONS WHERE TABLE_NAME ='EMPLOYEE';
TABLE_NAME PARTITION_NAME PARTITION_POSITION HIGH_VALUE
--------------- --------------- ------------------ --------------------------------------------------------------------------------
EMPLOYEE P6 1 20000
EMPLOYEE P3 2 30000
EMPLOYEE P4 3 MAXVALUE
SQL> Alter table Employee
Truncate partition p6; 2
Table truncated.
SQL> Select * from Employee partition (p6);
no rows selected
SQL> Alter table Employee
Split partition p6 at (10000)
into (partition p10,partition p11); 2 3
Table altered.
SQL> SELECT TABLE_NAME,PARTITION_NAME, PARTITION_POSITION, HIGH_VALUE FROM USER_TAB_PARTITIONS WHERE TABLE_NAME ='EMPLOYEE';
TABLE_NAME PARTITION_NAME PARTITION_POSITION HIGH_VALUE
--------------- --------------- ------------------ --------------------------------------------------------------------------------
EMPLOYEE P10 1 10000
EMPLOYEE P11 2 20000
EMPLOYEE P3 3 30000
EMPLOYEE P4 4 MAXVALUE
Alter table Employee
move partition p6 to tablespace ABCD;
Create table Tablename
(Column_name1 datatype(size)….
Column_name-n datatype(size))
Partition by range(Column needs to be partitioned)
(Partition partition_name1 values less than(value1)….
Partition partition_name-n values less than(maxvalue));
Create table with partition to State column:
Create table Employee1(emp_no number(2),
State varchar2(20))
partition by List(State)
(partition p1_Maharashtra values ('Maharashtra'),
partition p2_Gujrath values('Gujrath'),
partition p3_Rajsthan values('Bengal'),
partition p4_Other values (Default));
SQL> Create table Employee1(emp_no number(2),
State varchar2(20))
partition by List(State)
(partition p1_Maharashtra values ('Maharashtra'),
partition p2_Gujrath values('Gujrath'),
partition p3_Rajsthan values('Bengal'),
partition p4_Other values (Default)); 2 3 4 5 6 7
Table created.
Insert into table:
SQL>
SQL> Insert into Employee1
values(1,'Maharashtra');
2
1 row created.
Value inserted in partition p1_Maharashtra which is maximum value.
SQL>
Insert into Employee1
values(2,'Kerala')
;SQL>
2
1 row created.
Value inserted in partition p4_Others.
SQL> Select * from Employee1;
EMP_NO STATE
---------- --------------------
1 Maharashtra
2 Kerala
SQL>
Select * from Employee1 partition(p1_Maharashtra);SQL>
EMP_NO STATE
---------- --------------------
1 Maharashtra
Alter table Employee1
add partition p5_Kerala values('Kerala');
Alter table Employee
drop partition p1_Maharashtra;
Alter table Employee
Rename partition p1_Maharashra to p6_Maha;
Alter table Employee
Alter table Employee
move partition p1_Maharashtra to tablespace ABCD;
Create table Table_name
(Column_name1 datatype1…
Column_name n datatype ‘n’)
Partition by Hash(column_name)
Partitions partition_number);
Create table Employee2
(emp_no number(2),
emp_name varchar(2))
partition by hash(emp_no) partitions 5;
The Above statement will create 5 partitions named:
Sys_P1
Sys_P2
Sys_P3
Sys_P4
Sys_P5
set linesize 200
set pagesize 200
col table_name format a15
col partition_name format a15
break on table_name skip 1
SELECT TABLE_NAME,PARTITION_NAME, PARTITION_POSITION, HIGH_VALUE FROM USER_TAB_PARTITIONS WHERE TABLE_NAME ='EMPLOYEE2';
SQL> /
TABLE_NAME PARTITION_NAME PARTITION_POSITION HIGH_VALUE
--------------- --------------- ------------------ --------------------------------------------------------------------------------
EMPLOYEE2 SYS_P4906 1
SYS_P4907 2
SYS_P4908 3
SYS_P4909 4
SYS_P4910 5
SQL> Insert into Employee2
values(1,'AB'); 2
SQL> Insert into Employee2
values(2,'CD'); 2
1 row created.
SQL> COMMIT;
Commit complete.
SQL> select * from Employee2 ;
EMP_NO EM
---------- --
2 CD
1 AB
SET LINESIZE 200
SET PAGESIZE 200
col table_name format a15
col partition_name format a15
break on table_name skip 1
SQL>
select table_name,partition_name,tablespace_name,num_rows,blocks,avg_row_len,segment_created from user_tab_partitions
where table_name like 'EMPLOYEE2';
Alter table tablename
Modify
Partition by partition_name(Column_name)(
Partition partition_name values ……
) online;
Alter table Employee
Modify
Partition by LIST(Employee_City)
(
Partition P_Kolhapur values(‘Kolhapur’),
Partition P_SQuery used:angali values(‘Sangli’),
Partition P_OTH values(default)
) online;Please to add comments
No comments yet. Be the first to comment!