Setting up Environment:
( TDATE DATE,
START_DATE NUMBER,
END_DATE NUMBER,
PNUMBER NUMBER,
ACODE CHAR(2)
) tablespace users;
begin
for z in 0..11 loop
for i in 1..323 loop
for j in 1..31 loop
insert into txn values(sysdate-433+j+(31*z),1212*i,2323232*i,122323*i,(select
decode(trunc(dbms_random.value(1,5)),1,'CN',2,'MD',3,'CO',4,'TR','CN') from dual));
end loop;
end loop;
end loop;
end;
/
select table_name,num_rows,last_analyzed,degree,partitioned from user_tables;
Range Partitions
CREATE TABLE TXN_RANGE
(TDATE DATE,
START_DATE NUMBER,
END_DATE NUMBER,
PNUMBER NUMBER,
ACODE CHAR(2))
PARTITION BY RANGE (TDATE)
(PARTITION p1 VALUES LESS THAN (TO_DATE('31/03/2020', 'DD/MM/YYYY')) TABLESPACE USERS,
PARTITION p2 VALUES LESS THAN (TO_DATE('30/06/2020', 'DD/MM/YYYY')) TABLESPACE USERS,
PARTITION p3 VALUES LESS THAN (TO_DATE('30/09/2020', 'DD/MM/YYYY')) TABLESPACE USERS,
PARTITION p4 VALUES LESS THAN (MAXVALUE) TABLESPACE USERS);
exec dbms_stats.gather_table_stats('','TXN_RANGE');
CREATE TABLE TXN_number
(tno number,
sno NUMBER,
Eno NUMBER,
PNUMBER NUMBER,
ACODE CHAR(2))
PARTITION BY RANGE (tno)
(PARTITION p1 VALUES LESS THAN (1000) TABLESPACE USERS,
PARTITION p2 VALUES LESS THAN (2000) TABLESPACE USERS,
PARTITION p3 VALUES LESS THAN (3000) TABLESPACE USERS,
PARTITION p4 VALUES LESS THAN (MAXVALUE) TABLESPACE USERS);
begin
for i in 1..4000 loop
insert into TXN_number values(i,i,i,i,'CN');
end loop;
end;
/
LIST Partition:
CREATE TABLE TXN_LIST
(TDATE DATE,
START_DATE NUMBER,
END_DATE NUMBER,
PNUMBER NUMBER,
ACODE CHAR(2))
PARTITION BY LIST (ACODE)
(PARTITION Chennai VALUES ('CN') TABLESPACE USERS,
PARTITION madurai VALUES ('MD') TABLESPACE USERS,
PARTITION Covai VALUES ('CO') TABLESPACE USERS,
PARTITION trichy VALUES ('TR') TABLESPACE USERS);
HASH Partition:
CREATE TABLE TXN_HASH
(TDATE DATE,
START_DATE NUMBER,
END_DATE NUMBER,
PNUMBER NUMBER,
ACODE CHAR(2))
PARTITION BY HASH (TDATE)
PARTITIONS 4
STORE IN (users, users, users, users);
COMPOSITE Partition:
CREATE TABLE TXN_RANGE_LIST
(TDATE DATE,
START_DATE NUMBER,
END_DATE NUMBER,
PNUMBER NUMBER,
ACODE CHAR(2))
PARTITION BY RANGE (TDATE)
SUBPARTITION BY LIST (ACODE)
SUBPARTITION TEMPLATE
(
SUBPARTITION Chennai VALUES ('CN'),
SUBPARTITION madurai VALUES ('MD'),
SUBPARTITION Coimb VALUES ('CO'),
SUBPARTITION trichy VALUES ('TR')
)
(PARTITION p1 VALUES LESS THAN (TO_DATE('31/03/2020', 'DD/MM/YYYY')) TABLESPACE USERS,
PARTITION p2 VALUES LESS THAN (TO_DATE('30/06/2020', 'DD/MM/YYYY')) TABLESPACE USERS,
PARTITION p3 VALUES LESS THAN (TO_DATE('30/09/2020', 'DD/MM/YYYY')) TABLESPACE USERS,
PARTITION p4 VALUES LESS THAN (MAXVALUE) TABLESPACE USERS);
INTERVAL Partition:
CREATE TABLE TXN_INTERVAL_MONTH (TDATE DATE,
START_DATE NUMBER,
END_DATE NUMBER,
PNUMBER NUMBER,
ACODE CHAR(2))
PARTITION BY RANGE (TDATE)
INTERVAL (NUMTOYMINTERVAL(1,'MONTH'))
(
PARTITION FIRST_PARTITION values LESS THAN (TO_DATE('01/03/2020', 'DD/MM/YYYY'))
);
INTERVAL Partition:
CREATE TABLE TXN_INTERVAL_DAY (TDATE DATE,
START_DATE NUMBER,
END_DATE NUMBER,
PNUMBER NUMBER,
ACODE CHAR(2))
PARTITION BY RANGE (TDATE)
INTERVAL (NUMTODSINTERVAL(1,'DAY'))
(
PARTITION FIRST_PARTITION values LESS THAN (TO_DATE('01/03/2020', 'DD/MM/YYYY'))
);
SYSTEM Partition
CREATE TABLE TXN_SYSTEM (TDATE DATE,
START_DATE NUMBER,
END_DATE NUMBER,
PNUMBER NUMBER,
ACODE CHAR(2))
PARTITION BY SYSTEM
(
PARTITION part_1,
PARTITION part_2,
PARTITION part_3
);
REFERENCE Partition
CREATE TABLE TXN_parent (TDATE DATE primary key,
START_DATE NUMBER,
END_DATE NUMBER,
PNUMBER NUMBER,
ACODE CHAR(2))
PARTITION BY RANGE (TDATE)
(PARTITION p1 VALUES LESS THAN (TO_DATE('31/03/2020', 'DD/MM/YYYY')) TABLESPACE USERS,
PARTITION p2 VALUES LESS THAN (TO_DATE('30/06/2020', 'DD/MM/YYYY')) TABLESPACE USERS,
PARTITION p3 VALUES LESS THAN (TO_DATE('30/09/2020', 'DD/MM/YYYY')) TABLESPACE USERS,
PARTITION p4 VALUES LESS THAN (MAXVALUE) TABLESPACE USERS);
CREATE TABLE txn_child (TDATE DATE,
START_DATE NUMBER,
END_DATE NUMBER,
PNUMBER NUMBER,
ACODE CHAR(2),
CONSTRAINT child_parent_tab_fk FOREIGN KEY (tdate)
REFERENCES txn_parent (tdate)
)
PARTITION BY REFERENCE (child_parent_tab_fk);
CN,MD,CO,TR
VIRTUAL Partition
CREATE TABLE TXN_VIRTUAL(TDATE DATE,
START_DATE NUMBER,
END_DATE NUMBER,
PNUMBER NUMBER,
ACODE CHAR(2),
SECOND_CHAR
GENERATED ALWAYS AS
(
UPPER(SUBSTR(TRIM(ACODE), 2, 1))
) VIRTUAL
)
PARTITION BY LIST (SECOND_CHAR)
(
PARTITION part_A_J VALUES ('A','B','C','D','E','F','G'),
PARTITION part_K_O VALUES ('H','I','J','K','L','M','N'),
PARTITION part_P_T VALUES ('O','P','Q','R','S','T','U'),
PARTITION part_V_Z VALUES ('V','W','X','Y','Z')
);
insert into TXN_VIRTUAL(tdate,start_date,end_Date,pnumber,acode) select * from txn;
OPERATIONS on Partitions:
Hints :
Add
modify
alter table TXN_VIRTUAL modify partition PART_P_T drop values('O');
drop
truncate
==============
rename
================
coalesce
alter table txn_hash coalesce;
alter table txn_hash
modify partition SYS_P829
coalesce partition;
alter table txn_hash coalesce partition;
exchange
create table TXN_LIST_1 as select * from txn_list where 1=2;
alter table TXN_LIST
exchange partition MADURAI
with table TXN_LIST_1
with validation;
SPLIT
alter table txn_number split partition p1 at (500) into
(Partition p1_L500 tablespace users,
Partition p1_M500 tablespace users);
MERGE
alter table txn_number
merge partitions p1_l500,p1_m500
into partition p1;
select count(*) from txn_list_1;
=======================
online move
======================
cleanup
cleanup_online_op
CLEANUP_GIDX
execute dbms_part.cleanup_online_op('','TXN_LIST');
cleans the failed alter table ..move command
No comments:
Post a Comment