Гость
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Удаление старых партиций для автопартицируемой таблицы.. / 8 сообщений из 8, страница 1 из 1
13.07.2020, 11:14
    #39978834
Scorpion_TSN
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление старых партиций для автопартицируемой таблицы..
Привет!

Народ, поделитесь скриптом, если у кого есть, который удаляет старые партиции для автопартицируемой по дате таблицы..
Либо поделитесь мыслями, как это лучше реализовать: тут тонкий момент, как вычислить имя партиции по дате..

Спасибо..
...
Рейтинг: 0 / 0
13.07.2020, 11:20
    #39978836
Scorpion_TSN
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление старых партиций для автопартицируемой таблицы..
У меня, в принципе, есть решение:
- достать имена всех партиций для таблицы
- с помощью select as prtition узнать диапазоны дат для партиций
- trunc тех партиций, которые старые..

Но может кто-то более легкое решение знает?
...
Рейтинг: 0 / 0
13.07.2020, 11:33
    #39978843
Надфиль
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление старых партиций для автопартицируемой таблицы..
...
Рейтинг: 0 / 0
13.07.2020, 13:10
    #39978926
orawish
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление старых партиций для автопартицируемой таблицы..
Scorpion_TSN,

для секций, нарезанных по дате удобно, если имя секции содержит тую дату
соответственно - смотрите выше:
Надфиль
Scorpion_TSN,
как то так

alter table ..... drop partition for (DATE'2018-09-01')
..

rename partition
ну или же
truncate partition
...
Рейтинг: 0 / 0
13.07.2020, 13:12
    #39978927
Scorpion_TSN
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление старых партиций для автопартицируемой таблицы..
Надфиль,

)) Забыл уточнить.. для Oracle DB 11.2.0.4 EE.

Но буду иметь в виду. Спасибо.
...
Рейтинг: 0 / 0
13.07.2020, 13:17
    #39978930
Scorpion_TSN
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление старых партиций для автопартицируемой таблицы..
Нашел вот такое решение, буду, наверное, его использовать..

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
select table_name,
       partition_name,
       to_date (
          trim (
          '''' from regexp_substr (
                     extractvalue (
                       dbms_xmlgen.getxmltype (
                       'select high_value from all_tab_partitions where table_name='''
                                || table_name
                                || ''' and table_owner = '''
                                || table_owner
                                || ''' and partition_name = '''
                                || partition_name
                                || ''''),
                             '//text()'),
                          '''.*?''')),
          'syyyy-mm-dd hh24:mi:ss')
          high_value_in_date_format
  FROM all_tab_partitions
 WHERE table_name = 'SALES' AND table_owner = 'SH'
...
Рейтинг: 0 / 0
13.07.2020, 13:46
    #39978950
Scorpion_TSN
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление старых партиций для автопартицируемой таблицы..
Scorpion_TSN
Надфиль,

)) Забыл уточнить.. для Oracle DB 11.2.0.4 EE.

Но буду иметь в виду. Спасибо.


Для 11-ого тоже работает.. Я когда проверял, в синтаксисе ошибся..

Еще раз спасибо..
...
Рейтинг: 0 / 0
15.07.2020, 09:49
    #39979743
andrey_anonymous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление старых партиций для автопартицируемой таблицы..
Надфиль
Scorpion_TSN,
как то так

alter table ..... drop partition for (DATE'2018-09-01')

В этом деле главное не дропнуть лишнего ...
Как полагаете, что станет с разделом for (DATE'2018-10-01'), если повторить рекомендованную команду еще раз ?
Праальна, не будет больше раздела. Как и любого другого, если повторять достаточное количество раз.
В этой связи указанный метод для зачистки старых разделов лично я применяю только в варианте
truncate partition drop all storage
но ни в коем разе не drop partition
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Удаление старых партиций для автопартицируемой таблицы.. / 8 сообщений из 8, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]