Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / IBM DB2, WebSphere, IMS, U2, etc Новый топик    Ответить
 удаление старых бэкапов в 8.1  [new]
Андрей Васильевич
Member

Откуда:
Сообщений: 281
Доброго дня!
Настроил автоматическое резервное копирование(полное). Журналов не использую(пока не использую). Каким образом можно старые бекапы удалять? Есть значения по времени хранения старых бекапов и я их настроил(num_db_backups и rec_his_retentn). Толку нет. Насколько я понял из документации это не работает без auto_del_rec_obj. Но в 8.1 auto_del_rec_obj нет. Странно, зачем тогда это нужно. Как быть подскажите? Можно конечно написать прогу для удаления, но может чего-то есть штатное?
4 окт 11, 14:11    [11381153]     Ответить | Цитировать Сообщить модератору
 Re: удаление старых бэкапов в 8.1  [new]
Mark Barinstein
Member

Откуда: Москва
Сообщений: 4946
Андрей Васильевич,

Здравствуйте.

Эти параметры нужны для ведения 'Recovery history file'.
Если надо удалять старые архивы, то в 8 надо самому программу писать.
4 окт 11, 16:02    [11382392]     Ответить | Цитировать Сообщить модератору
 Re: удаление старых бэкапов в 8.1  [new]
Андрей Васильевич
Member

Откуда:
Сообщений: 281
По поводу журналирования уже: правильно ли я понимаю, что директорию для архивных журналов можно очищать после создания очередных журналов? Туда ведь переносятся после резервного копирования устаревшие журналы?
4 окт 11, 17:15    [11383337]     Ответить | Цитировать Сообщить модератору
 Re: удаление старых бэкапов в 8.1  [new]
Mark Barinstein
Member

Откуда: Москва
Сообщений: 4946
Андрей Васильевич
правильно ли я понимаю, что директорию для архивных журналов можно очищать после создания очередных журналов? Туда ведь переносятся после резервного копирования устаревшие журналы?
Если ваша база находится в режиме архивации журналов, то вы имеете возможность накатывать по ним базу (rollforward) после восстановления из архива (restore).
Для каждого архива (A) есть журнал с минимальным номером (N), начиная с которого все журналы нужны.
Если этот архив A - самый старый из тех, с которых вы планируете восстанавливаться и накатываться по журналам до конца, то журналы с номерами меньше N вам не нужны.
4 окт 11, 17:38    [11383558]     Ответить | Цитировать Сообщить модератору
 Re: удаление старых бэкапов в 8.1  [new]
Андрей Васильевич
Member

Откуда:
Сообщений: 281
Понимаю. Я не правильно сформулировал вопрос. Бекапы периодически создаются и после этого журналы сжимаются и копируются в папку архивных журналов из папки где накапливаются журналы. Если я правильно понял, то в папке, куда копируются журналы после создания бекапа, можно удалять все файлы(если считать, что необходим только последний бекап+его журналы)? Я так понимаю - да.
5 окт 11, 10:07    [11385963]     Ответить | Цитировать Сообщить модератору
 Re: удаление старых бэкапов в 8.1  [new]
Mark Barinstein
Member

Откуда: Москва
Сообщений: 4946
Андрей Васильевич,

Когда журнал закрывается, он копируется в папку с архивными журналами (т.е. архивируется).
Журнал может закрываться по разным причинам, например, когда он заполнился, или завершился онлайновый архив.
Где бы ни находились журналы, желательно не удалять те, которые нужны для восстановления из этого архива, особенно если вы не используете опцию include logs для онлайнового архива.
5 окт 11, 11:29    [11386561]     Ответить | Цитировать Сообщить модератору
 Re: удаление старых бэкапов в 8.1  [new]
Андрей Васильевич
Member

Откуда:
Сообщений: 281
А как быть с логами которые хранятся по альтернативному адресу? Я пока не указывал место хранения. Меня вот интересует, что там будет храниться: все логи или только активные(а старые в архив)?
6 окт 11, 09:50    [11392656]     Ответить | Цитировать Сообщить модератору
 Re: удаление старых бэкапов в 8.1  [new]
Андрей Васильевич
Member

Откуда:
Сообщений: 281
И еще. Если, например, каждый час (можно еще и очистить предварительно db2 prune logfile) и архивировать всю директорию корневую для активных и архивных логов на рабочей системе(прям архиватором по живому), то потом по этим логам и соответствующему бэкапу можно будет восстановить базу до момента последней архивации? И не повлияет это на работу базы(архиватор по идее открывает на чтение)?
6 окт 11, 10:04    [11392772]     Ответить | Цитировать Сообщить модератору
 Re: удаление старых бэкапов в 8.1  [new]
Mark Barinstein
Member

Откуда: Москва
Сообщений: 4946
"Альтернативный адрес" - это который в failarchpath указан?
Вы бы лучше имена параметров указывали, например отсюда:
Configuration parameters for database logging

Архивировать активные журналы - плохая идея, архиватор может сжать непонятно что, если в момент его работы в файл происходит запись.
Если вы хотите использовать prune logfile, то имейте ввиду, что оно не будет удалять архивные журналы из путей с архивными журналами ( logarchmeth[1|2] ), если вы их укажете. Оно будет работать только если архивные и активные журналы лежат в одном месте (т.е. если logarchmeth[1|2] не указаны).

Вы можете указать путь к архивным журналам (logarchmeth1) и использовать такой запрос для получения списка всех архивов и первого нужного журнала для каждого архива:
SELECT t.start_time, t.firstlog, t.location
FROM TABLE(SYSPROC.ADMIN_LIST_HIST()) T
WHERE OPERATION = 'B' and OPERATIONTYPE IN ('F', 'N') and OBJECTTYPE='D' and sqlcode is null
order by start_time desc
Основываясь на этом запросе, вы можете перед сжатием всех файлов из logarchmeth1 удалять все ненужные.
6 окт 11, 11:17    [11393209]     Ответить | Цитировать Сообщить модератору
 Re: удаление старых бэкапов в 8.1  [new]
Андрей Васильевич
Member

Откуда:
Сообщений: 281
Короче, я так понимаю, надо еще одну программу писать опять чтоб там выбирать архивы и удалять логи старше первого лога для необходимого архива. Что ж за жизнь такая. Спасибо за sql запрос, он мне очень понадобится. Все ж легче чем парсить ответ команды.
6 окт 11, 11:54    [11393565]     Ответить | Цитировать Сообщить модератору
 Re: удаление старых бэкапов в 8.1  [new]
Victor Metelitsa
Member

Откуда: Тюмень
Сообщений: 2550
Для виндов существует чудесная програмка fpurge, удаляющая файлы старше указанного срока. Для *x-ов аналогичное делают через
find какиетопараметры| rm какиетопараметры
Поставить в schedule и не беспокоиться.

Копирование архивных логов можно настроить через userexit (см. SQLLIB\samples\c\db2uext2.cdisk). В старые времена, под OS/2, для userexit поддерживался REXX и в комплекте шёл скрипт-пример, который не только настраивал, но и zip-овал, раз-zip-овывал. К сожалению, поддержку REXX'а давным давно отрубили, однако, наверное, человеку, мало-мальски знакомому с C, будет несложно не просто копировать, но и вызвать архиватор.
6 окт 11, 15:05    [11395383]     Ответить | Цитировать Сообщить модератору
 Re: удаление старых бэкапов в 8.1  [new]
Андрей Васильевич
Member

Откуда:
Сообщений: 281
Спасибо за наводку! Как-то совсем забыл про примеры на "с". Я уже для бэкапов уже сделал программулину(кстати добавил туда архивирование 7z и еще сжимает до 80-90%). Единственное если вызывать из винды(назначенные задания) то работает нормально, а вот если из Task Center запускается то копирование не происходит(пробовал вызывать досовскую copy, WINAPI-шную CopyFile и SHFileOperation). Единственный момент: диск на который происходит копирование это папка на другом компьютере подсоединенная как диск(то есть адресация не \\1.2.3.4\x\y а F:\y). Поэтому немного не удобно. Приходится Брать время с запасом, чтоб время создания бэкапа не перекрывалось с архивированием и копированием. Если кто сталкивался посоветуйте.
6 окт 11, 15:49    [11395860]     Ответить | Цитировать Сообщить модератору
Все форумы / IBM DB2, WebSphere, IMS, U2, etc Ответить