Резервное копирование Oracle

Пришлось заняться созданием резервных копий Oracle баз данных.
Оказалось это все координально отличается от того с чем приходилось работать ранее: MSSQL, PostgreSQL, MySQL.
Вообщем решил оставить себе для памяти мануал действий, потомучто как обычно с такими системами происходит – ты их настроил и забыл. Работают годами.

Для резервного копирования был выбран RMAN.
Для автоматизации работы, был сформирован bat файл (сервер был на Windows) и запущен в планировщике задач.

@echo ON
REM +————————————————————————–+
REM | VALIDATE COMMAND-LINE PARAMETERS |
REM +————————————————————————–+

if (%1)==() goto USAGE
if (%2)==() goto USAGE
if (%3)==() goto USAGE

REM +————————————————————————–+
REM | VALIDATE ENVIRONMENT VARIABLES |
REM +————————————————————————–+

set ORALOG=C:\oracle\log
set ORATMP=C:\oracle\temp

if (%ORALOG%)==() goto ENV_VARIABLES
if (%ORATMP%)==() goto ENV_VARIABLES

REM +————————————————————————–+
REM | DECLARE ALL GLOBAL VARIABLES. |
REM +————————————————————————–+

set FILENAME=rman_backup_hot_full
set DB_USERNAME=%1%
set DB_PASSWORD=%2%
set TNS_ALIAS=%3%
set CMDFILE=%ORATMP%\%FILENAME%%TNS_ALIAS%.rcv set LOGFILE=%ORALOG%\%FILENAME%%TNS_ALIAS%.log

REM +————————————————————————–+
REM | REMOVE OLD LOG AND RMAN COMMAND FILES. |
REM +————————————————————————–+

del /q %CMDFILE%
del /q %LOGFILE%

REM +————————————————————————–+
REM | WRITE RMAN COMMAND SCRIPT. |
REM +————————————————————————–+

echo backup database plus archivelog delete input; > %CMDFILE%

echo delete noprompt force obsolete;>> %CMDFILE%

echo exit; >> %CMDFILE%

REM +————————————————————————–+
REM | PERFORM RMAN BACKUP. |
REM +————————————————————————–+

rman target %DB_USERNAME%/%DB_PASSWORD%@%TNS_ALIAS% nocatalog cmdfile=%CMDFILE% msglog %LOGFILE%

REM +————————————————————————–+
REM | SCAN THE RMAN LOGFILE FOR ERRORS. |
REM +————————————————————————–+

findstr /i “error” %LOGFILE%
if errorlevel 0 if not errorlevel 1 echo WARNING %FILENAME% %TNS_ALIAS% %COMPUTERNAME% %DATE% %TIME% %LOGFILE%

echo …
echo END OF FILE REPORT
echo Filename : %FILENAME%
echo Database : %TNS_ALIAS%
echo Hostname : %COMPUTERNAME%
echo Date : %DATE%
echo Time : %TIME%
echo RMAN Log File : %LOGFILE%

REM +————————————————————————–+
REM | END THIS SCRIPT. |
REM +————————————————————————–+

goto END

REM +==========================================================================+
REM | *** END OF SCRIPT *** |
REM +==========================================================================+

REM +————————————————————————–+
REM | LABEL DECLARATION SECTION. |
REM +————————————————————————–+

:USAGE
echo Usage: rman.bat DBA_USERNAME DBA_PASSWORD TNS_ALIAS
echo DBA_USERNAME = Oracle DBA Username – (Requires SYSDBA Role)
echo DBA_PASSWORD = Oracle DBA Password
echo TNS_ALIAS = Connect String to connect to the database (ex. ORCL)
goto END

:ENV_VARIABLES
echo ERROR: You must set the following environment variables before
echo running this script:
echo ORALOG = Directory used to write logfile to
echo ORATMP = Directory used to write temporary files to
goto END

:END
@echo on

Исходник http://www.dba-oracle.com/t_windows_rman_backup_bat_file.htm