Часто возникает задача подчистить старые партиции табличек. Поскольку дело это достаточно опасное, лучше пользоваться шаблоном.
В этом шаблоне не учитывается возможность существования каких-то партиций по умолчанию и т.п. В примере удаляются месячные партиции с данными, которые старше 01.01.2024 года.
SQL код:
select * from dba_tab_partitions where table_owner='ODM' and table_name='PARTICIPANTINFO';
BEGIN
FOR cc IN (SELECT partition_name, high_value
FROM dba_tab_partitions
where table_owner='ODM' and table_name='PARTICIPANTINFO') LOOP
EXECUTE IMMEDIATE
'BEGIN
IF to_date(''01.01.2024'',''DD.MM.YYYY'') >= ADD_MONTHS(' || cc.high_value || ', 1) THEN
dbms_output.put_line(''ALTER TABLE ODM.PARTICIPANTINFO DROP PARTITION '|| cc.partition_name || ''');
execute immediate ''ALTER TABLE ODM.PARTICIPANTINFO DROP PARTITION '|| cc.partition_name || ''';
END IF;
END;';
END LOOP;
END;