0% found this document useful (0 votes)
22 views

Table Partition

The document discusses different types of partitioning in Oracle databases including range, list, and hash partitioning. Range partitioning allows partitioning a table based on ranges of values of a given column like numbers or dates. List partitioning allows assigning rows to partitions based on lists of discrete values of a column like departments or cities. Hash partitioning partitions rows randomly and evenly based on the hash of a column value when the column is not suitable for range or list partitioning.

Uploaded by

spider14
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
22 views

Table Partition

The document discusses different types of partitioning in Oracle databases including range, list, and hash partitioning. Range partitioning allows partitioning a table based on ranges of values of a given column like numbers or dates. List partitioning allows assigning rows to partitions based on lists of discrete values of a column like departments or cities. Hash partitioning partitions rows randomly and evenly based on the hash of a column value when the column is not suitable for range or list partitioning.

Uploaded by

spider14
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 3

--PARTITION

--PARTITIONING ALLOWS TABLE,INDEX AND INDEX_ORGANIZED TABLES TO SUB DIVIDED INTO


SMALLER PIECES,
--ENABLING THOSE DATABASE OBJECT TO BE MANAGED AND ACCESSED AT A FINER LEVEL OF
GRANULARITY.

--WHY WE USE PARTITION?


--WHEN WE ARE TAKING 30% ABOVE DATA .
--INDEX WILL BE INEFFECTIVE (INDEX ONLY USED FOR LESS THAN 4% DATA OUTPUT)
--FULL TABLE SCAN WILL TAKE WAY TOO MUCH TIME.
--ADVANTAGES
--FULL PARTITION SCAN (LESS DATA,MUCH FASTER).
--THEN OUR PERFORMANCE SIGNIFICANTLY IMPROVE.
--PAARTITION IS IMPROVEMENT OF PERFORMANCE WHEN HANDLING HUGE AMOUNT OF DATA(2GB)
--(ANY TABLE BIGGER THEN 2GB)
--TYPES
--LIST/REGION PARTITION -- (WE CAN GIVE NUMBER AND VARCHAR2 DATA TYPE)
--RANGE PARTITION --(WE CAN GIVE NUMBER AND DATE DATA TYPE)
--HASH PARTITION --(WHICH COLUMNS DOESN'T CREATE RANGE AND LIST THEN WE
CREATE HASH PARTITION.)
--ENABLE ROW MOVEMENT
--ITS USED FOR WHEN WE UPDATE PARTITION COLUMN IN FUTURE SO THAT'S WHY WE USE
ENABLE ROW MOVEMENT.
--OTHERWISE ROW MOVEMENT IS NOT POSSIBLE .(ERROR OCCURED).

-----------------------------------------------------------------------------------
-----------------------
-->RANGE PARTITION (WE CAN GIVE NUMBER AND DATE DATA TYPE)

CREATE TABLE EMP (EMP_ID NUMBER,NAME VARCHAR2(30),SALARY NUMBER,DEPT_ID


NUMBER,HIRE_DATE DATE)
PARTITION BY RANGE (SALARY) INTERVAL (1000)
--INTERVAL IS OPTIONAL
(
PARTITION P1 VALUES LESS THAN (1000),
PARTITION P2 VALUES LESS THAN (2000),
PARTITION P3 VALUES LESS THAN (3000)
)ENABLE ROW MOVEMENT;

SELECT*FROM USER_TAB_PARTITIONS WHERE TABLE_NAME='EMP';

ALTER TABLE EMP ADD PARTITION P4 VALUES LESS THAN (4000);


--ORA-14760: ADD PARTITION IS NOT PERMITTED ON INTERVAL PARTITIONED OBJECTS
--BCOZ WHEN WE GIVE SALARY <=3000 THEN IT'S TAKE SYSTEM GENERATED PARTITION.

INSERT INTO EMP VALUES (100,'SUNDAR',3000,10,'01-FEB-21'); --PARTITION P4 CREATE


LIKE SYS_NAME
INSERT INTO EMP VALUES (100,'RAJ',2000,20,'01-APR-21'); --ITS P3 PARTITION.

SELECT*FROM EMP PARTITION (P3);

SELECT*FROM USER_TAB_PARTITIONS WHERE TABLE_NAME='EMP';

SELECT TABLE_NAME,PARTITION_NAME,SUBPARTITION_COUNT,TABLESPACE_NAME FROM


USER_TAB_PARTITIONS WHERE TABLE_NAME ='EMP';

DELETE FROM EMP WHERE HIRE_DATE='01-APR-21'; --ITS DELETE FROM MAIN TABLE ALSO
PARTITION TABLE BUT PARTITION P3 IS AVAILABALE .
---------->

CREATE TABLE EMP1(EMP_ID NUMBER,NAME VARCHAR2(30),SALARY NUMBER,DEPT_ID


NUMBER,HIRE_DATE DATE)
PARTITION BY RANGE (SALARY)
(
PARTITION P1 VALUES LESS THAN (10000),
PARTITION P2 VALUES LESS THAN (15000),
PARTITION P3 VALUES LESS THAN (20000)
);

SELECT*FROM USER_TAB_PARTITIONS WHERE TABLE_NAME='EMP1';

SELECT TABLE_NAME,PARTITION_NAME,SUBPARTITION_COUNT,TABLESPACE_NAME FROM


USER_TAB_PARTITIONS WHERE TABLE_NAME ='EMP1';

ALTER TABLE EMP1 ADD PARTITION P4 VALUES LESS THAN (25000);

SELECT*FROM USER_TAB_PARTITIONS WHERE TABLE_NAME='EMP1';

INSERT INTO EMP1 VALUES (104,'SURYA',30000,40,'01-APR-21');


--ORA-14400: inserted partition key does not map to any partition ORA-06512: at
"SYS.DBMS_SQL", line 1721
--OUR SALARY COLUMN ONLY IN P4 --25000.

------------>
POSSIBLE OPERATIONS WITH RANGE PARTITION

*ADD-->ALTER TABLE EMPLOYEES ADD PARTITION P5 VALUES LESS THAN (50);


*DROP-->ALTER TABLE EMPLOYEES DROP PARTITION P4;
*TRUNCATE-->ALTER TABLE EMPLOYEES TRUNCATE PARTITION P6;
*RENAME -->ALTER TABLE EMPLOYEES RENAME PARTITION P3 TO P4;
*MOVE-->ALTER TABLE EMPLOYEES MOVE APRTITION P21 TABLESPACE SYSAUX;
*SPLIT -->WE HAVE PARTITION P2 VALUE 10 TO 20 NOW,
--ALTER TABLE EMPLOYEES SPLIT PARTITION P2 AT(15) INTO (PARTITION
P21,PARTITION P22);
*EXCHANGE-->TABLE TO TABLE (NON PARTITIONED TABLE) -->ALTER TABLE EMPLOYEES
EXCHANGE PARTITION P21 WITH TABLE EMPLOYEES2;
-->NON PARTITIONED ONLY EXCHANGING DATA(P).

-----------------------------------------------------------------------------------
------------------------------------------
-->LIST PARTITION ( WE CAN GIVE NUMBER AND VARCHAR2 DATA TYPE )

CREATE TABLE EMP2 (EMP_ID NUMBER,NAME VARCHAR2(30),SALARY NUMBER,DEPT_ID


NUMBER,HIRE_DATE DATE)
PARTITION BY LIST (DEPT_ID)
(
PARTITION P1 VALUES (10,20,30),
PARTITION P2 VALUES (40,50,60),
PARTITION P3 VALUES (70,80,90)
);

SELECT*FROM USER_TAB_PARTITIONS WHERE TABLE_NAME='EMP2';


SELECT TABLE_NAME,PARTITION_NAME,SUBPARTITION_COUNT,TABLESPACE_NAME FROM
USER_TAB_PARTITIONS WHERE TABLE_NAME ='EMP2';
CREATE TABLE EMP3 (EMP_ID NUMBER,NAME VARCHAR2(30),SALARY NUMBER,DEPT_ID
NUMBER,HIRE_DATE DATE,CITY VARCHAR2(30))
PARTITION BY LIST (CITY)
(
PARTITION P1 VALUES ('CHENNAI','MADURAI'),
PARTITION P2 VALUES ('KOVAI','TRICHY'),
PARTITION P3 VALUES ('CHIDAMBARAM','VELUR')
);

SELECT*FROM USER_TAB_PARTITIONS WHERE TABLE_NAME='EMP3';


SELECT TABLE_NAME,PARTITION_NAME,SUBPARTITION_COUNT,TABLESPACE_NAME FROM
USER_TAB_PARTITIONS WHERE TABLE_NAME ='EMP3';

-----------------------------------------------------------------------------------
--------------

-->HASH PARTITION (WHICH COLUMN DOESN'T CREATE RANGE AND LIST THEN WE CREATE HASH
PARTITION.)

CREATE TABLE EMP4(EMP_ID NUMBER,NAME VARCHAR2(30),SALARY NUMBER,DEPT_ID


NUMBER,HIRE_DATE DATE,CITY VARCHAR2(30))
PARTITION BY HASH (EMP_ID)
PARTITION 4;

SELECT*FROM USER_TAB_PARTITIONS WHERE TABLE_NAME='EMP4';


SELECT TABLE_NAME,PARTITION_NAME,SUBPARTITION_COUNT,TABLESPACE_NAME FROM
USER_TAB_PARTITIONS WHERE TABLE_NAME ='EMP4';

-----------------------------------------------------------------------------------
------------

DOUBTS

ALTER TABLE EMP1 MODIFY PARTITION P3 VALUES LESS THAN (23000);

You might also like