set pages 999 lines 100
col table_name format a40
select table_name
, partitioning_type type
, partition_count partitions
from dba_part_tables
where owner = '&owner'
order by 1
/
List a tables partitions
set pages 999 lines 100
col high_value format a20
col tablespace_name format a20
select partition_name
, tablespace_name
, high_value
from dba_tab_partitions
where table_owner = '&owner'
and table_name = '&table_name'
order by partition_position
/
Show partition sizes for the specified table
set pages 999 lines 100
col tablespace_name format a20
col num_rows format 999,999,999
select p.partition_name
, p.tablespace_name
, p.num_rows
, ceil(s.bytes / 1024 / 1204) mb
from dba_tab_partitions p
, dba_segments s
where p.table_owner = s.owner
and p.partition_name = s.partition_name
and p.table_name = s.segment_name
and p.table_owner = '&owner'
and p.table_name = '&table_name'
order by partition_position
/
Move a partition to a new tablespace
alter table <table_name>
move partition <partition_name>
tablespace <tablespace_name>
nologging
/
Add a partition
alter table <table_name>
add partition <partition_name> values less than (<value>)
tablespace <tablespace_name>
/
alter table <table_name>
split partition <partition_name> at (<value>)
into (partition <partition_name>, partition <partition_name>)
update global indexes
/
Drop a partition
alter table <table_name> drop partition <partition_name>
/
Truncate a partition
alter table <table_name> truncate partition <partition_name>
/