When we need to add/remove or change LIMIT, INTERVAL, AUTO we have to recreate partitioning from scratch. Such operations should be done fast. To remove options like LIMIT or INTERVAL one should write:
alter table t1 partition by system_time;
|
The command checks whether it is new or existing SYSTEM_TIME partitioning. And in the case of new it behaves as CREATE would do: adds default number of partitions (2). If SYSTEM_TIME partitioning already existed it just changes its options: removes unspecified ones and adds/changes those specified explicitly. In case when partitions list was supplied it behaves as usual: does full repartitioning.
Examples:
create or replace table t1 (x int) with system versioning
|
partition by system_time limit 100 partitions 4;
|
# Change LIMIT
|
alter table t1 partition by system_time limit 33;
|
# Remove LIMIT
|
alter table t1 partition by system_time;
|
# This does full repartitioning
|
alter table t1 partition by system_time limit 33 partitions 4;
|
# This does data copy as pruning will require records in correct partitions
|
alter table t1 partition by system_time interval 1 hour
|
starts '2000-01-01 00:00:00';
|
# But this works fast, LIMIT will apply to DML commands
|
alter table t1 partition by system_time limit 33;
|