Задача: создать скрипт позволяющий делать дампы, с накоплением копий в пять последних
Решение:
- В базе создаем директорию BACKUP_DIR, куда будут складываться дампы.
sqlplus / as sysdba sql> CREATE OR REPLACE DIRECTORY BACKUP_DIR AS 'D:\db_backup'; sql> exit
2. Создаем bat-файл
REM Запускаем полный оракловый export data pump с условиями: REM FULL=Y - экспортим всю базу REM consistent=Y - данные в дампе согласованы (берется состояние базы на время REM начала создания дампа) REM directory=BACKUP_DIR -дамп ляжет в папку которую мы указали на предыдущем шаге REM dumpfile=FUll_dmp%date%.dmp - определяем имя файла экспорта с указанием текущей REM даты REM logfile=full_log%date%.log записываем лог в файл expdp.exe '/ as sysdba' FULL=Y consistent=Y directory=BACKUP_DIR dumpfile=FUll_dmp%date%.dmp logfile=full_log%date%.log REM пакуем созданные файлы экспорта и лога, опять таки с указанием даты zip D:\db_backup\dump%date%.zip D:\db_backup\FUll_dmp%date%.dmp D:\db_backup\full_log%date%.log REM удаляем исходные файлы del D:\db_backup\full_log%date%.log del D:\db_backup\FUll_dmp%date%.dmp REM переходим в папку cd /d D:\db_backup\ REM выбираем список файлов директории по маске отсортированные по дате за REM исключением первых пяти REM и удаляем файлы из полученного списка for /f "skip=5 eol=: delims=" %%F in ('dir /b /o-d D:\db_backup\*.*') do @del "%%F"
3. Осталось добавить bat’ник в планировщик задач, при этом помня, что весь скрипт должен выполнится в одни календарные сутки