Ни когда не задумывался о другом способе резервных копий базы данных oracle, так как холодное копирование вполне устраивало, но приходится развиваться и смотреть на другие стороны создания резервных копий баз данных.

Доброго времени суток всем.Работаю администратором баз данных далеко не первый год, но всегда работал в больших компаниях. За это время работал с Linux, Solaris, HP-UX. Но примерно год назад попал в небольшую компанию, и о ужас, все сервера на Windows, как такового резервного копирования не делалось, точнее только экспорт.Было необходимо делать нормальный физический backup, решил писать скрипт, как требования для себя выделил несколько моментов:

  1. Скрипт должен работать должен работать с любой ОС начиная с win 2003 сервер, при этом не требовать дополнительного софта.
  2. Скрипт должен работать на любом Oracle начиная с версии 9i, при этом делать полный, инкрементальный бэкап, и бэкап архивлогов.
  3. Скрипт должен быть, как можно проще, переносим с сервера на сервер, желательно чтобы это был один файл.

Первая мысль была поставить cygwin или perl, сделать Windows похожей на unix, но тогда будут трудности с переносом на другие сервера. Решил писать простой пакетный файл ms-dos, правда ничего сложнее, чем copy con my_text.txt в батниках я не писал. Реализация пункта 3, вообще получилось кошмаром, у меня нет встроенных документов, я не могу написать:

Решил все дополнительные скрипты записывать во временные файлы, а вывод програм в переменные. Неожиданно вылезла ещё одна проблема если переменная не задана echo %AAA% выводит %AAA%, пришлось переменной присваивать пробел.Для 10g и выше архивлоги собираются в бэкапсет, так как есть компрессия. Для 9i архивлоги копируются как есть, так как нет команды catalog, при восстановление из нескольких бекапсетов придется восстанавливать контрол файлы. При полном бэкапе все содержимое директории DEST переносится в OLD. И вот что у меня в итоге получилось:

Спасибо за внимание. Ссылка на скрипт

Tags: , , ,

Leave a Reply