But, for less down time you can use this method
Say you have a table
Code:
create table test2 (
OWNER VARCHAR2(30),
OBJECT_NAME VARCHAR2(128),
SUBOBJECT_NAME VARCHAR2(30),
OBJECT_ID NUMBER,
DATA_OBJECT_ID NUMBER,
OBJECT_TYPE VARCHAR2(18),
CREATED DATE,
LAST_DDL_TIME DATE,
TIMESTAMP vARCHAR2(19),
STATUS VARCHAR2(7),
TEMPORARY VARCHAR2(1),
GENERATED VARCHAR2(1),
SECONDARY VARCHAR2(1))
partition by range (object_id)
(partition RANGE_1 values less than (15000),
partition RANGE_2 values less than (20000),
partition RANGE_3 values less than (MAXVALUE)
) enable row movement;
Create a temporary table while database is in restricted mode (To avoid simultaneous operations).
Code:
create table test3 nologging as select * from test2;
drop table test2;
rename test3 to test2;
Remember to keep Indexes, constraints, triggers and other associated objects. Validate after rebuilding. Export the table before doing the operation.
Bookmarks