Oracle. "Умное" удаление партиций | |
---|---|
Pekpytep Автор Сообщений: 727 Откуда: Луганск Дата регистрации: 19.10.2010 |
Всем привет.
Есть некий большой лог, партиционированный по дате с интервалом в 1 день. Возник вопрос его периодической чистки, но учитывая что даже пустая партиция резервирует под себя дисковое пространство (насколько я помню), думаю имеет смысл именно дропать ненужные партиции, а не просто удалять данные. Возник вопрос, как определить список партиций подходящих под критерии удаления по значению ключа. Все что пока пришло на ум, это нечто типа
Есть подозрение, что я изобретаю велосипед с квадратными колесами и у оракла должна быть штатная функция определения имени партиции(й) по значению(диапазону). Действительно ли такая функция есть? |
Re: Oracle. "Умное" удаление партиций | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Не понятно - секции динамически добавляются? Ты не имеешь контроля над присваиваемым им именам? Или секции статические, скажем по номеру дня (31 штука) и просто периодически удаляются данные за прошлые месяцы?
Просто я не вижу особой нужды в функции "определения имени партиции по значению" Тем более что схем секционирования хватает и помимо Range - где вообще теряет смысл подобная задача... ------------------ WBR, Igor |
Re: Oracle. "Умное" удаление партиций | |
---|---|
Pekpytep Автор Сообщений: 727 Откуда: Луганск Дата регистрации: 19.10.2010 |
Как добавляются - не уверен, из дому нет доступа к базе. Имена генерятся ораклой автоматически. Секций по количеству дней, похоже что их там чуть менее 2 тыс.(период около 4-5 лет). Ни данные, ни секции до сегодняшнего дня не удалялись.
А как тогда сделать чтобы больше туда руками не лезть? Чтобы все чистилось автоматом по джобе в любой момент времени нужно как-то определять список секций-кандидатов на удаление. |
Re: Oracle. "Умное" удаление партиций | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Очевидно что проще всего генерить их имена явно, включая в имя YYYYMMDD (если критерий секционирования это range на 1 день) и соответственно удалять старые будет несложно не залазя в high_value - по тем же самым именам... Равно и создавать новые...
------------------ WBR, Igor |
Re: Oracle. "Умное" удаление партиций | |
---|---|
Pekpytep Автор Сообщений: 727 Откуда: Луганск Дата регистрации: 19.10.2010 |
Сделать это будет примерно так же легко, как увидеть в полдень 20-летнюю девственницу верхом на единороге.
Мы на аутсорсе, база нам не принадлежит. Нужно убедить заказчика в необходимости этих телодвижений ПМу, согласовать изменения, аналитикам написать ТЗ, создать задачи в джире, мне переделать, нашим тестерам протестировать, их тестерам протестировать, внедрить. Это месяца полтора, в лучшем случае, а дисковое пространство закончилось уже сейчас. Потом, переименовать будет тоже не так уж просто. Легче всего было бы переименовать старую таблицу, создать новую с таким же именем и перелить данные, но на диске нет свободного места. Переименовывать секции с автоматически сгенерированными именами (имена которых еще и отличаются на дев, тест и прод) вручную - то еще удовольствие, а чтобы написать скрипт автоматически переименовывающий имена по какому-то правилу нужно опять же определить текущее имя секции по значению. В общем, не вариант. В перспективе может кто-нибудь когда-нибудь и переделает, но сейчас придется, видимо, заморачиваться с выковыриванием значения из high_value. |
Re: Oracle. "Умное" удаление партиций | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Сейчас - да. На будущее - как хотите, можно сделать получше, можно оставить как есть. Решение же есть Если владелец базы дурак, то вполне логично что и решения для его базы будут дурацкие
------------------ WBR, Igor |
Re: Oracle. "Умное" удаление партиций | |
---|---|
Pekpytep Автор Сообщений: 727 Откуда: Луганск Дата регистрации: 19.10.2010 |
Хм, задача осложнилась тем, что user_tab_partitions.high_value имеет тип LONG, как выяснилось. Пришлось прокачать свой велосипед, добавив к нему еще один велосипед (чтобы я мог крутить педали
|
Re: Oracle. "Умное" удаление партиций | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Да, я когда-то функцию на pl/sql городил (точнее искал на просторах сети готовое решение ) чтобы с long полем более-менее нормально работать (в clob его загонял, потом можно было в запрос такую функцию вставлять) - через DBMS_SQL. Тоже для метаданных - но мне нужен был доступ к исходникам триггеров и ещё чему-то такого же рода, в long хранящемуся... Наверное тогда ещё с xml не было варианта, или не набрёл просто
------------------ WBR, Igor |
Re: Oracle. "Умное" удаление партиций | |
---|---|
Pekpytep Автор Сообщений: 727 Откуда: Луганск Дата регистрации: 19.10.2010 |
Еще один вариант удаления секций для лога на который нет FK:
|
© 2000-2024 Fox Club  |