22.01.2025 20:36
Часто возникает задача подчистить старые партиции табличек. Поскольку дело это достаточно опасное, лучше пользоваться шаблоном.
В этом шаблоне не учитывается возможность существования каких-то партиций по умолчанию и т.п. В примере удаляются месячные партиции с данными, которые старше 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; 
Часовой пояс GMT +3, время: 18:27.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.