@set ORACLE_HOME=D:\app\Administrator\product\11.2.0\dbhome_1
@rem echo %ORACLE_HOME%
@set ORACLE_SID=orcl
@rem echo %ORACLE_SID%
@set NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK
@rem echo %NLS_LANG%
@set PATH=%ORACLE_HOME%\bin
@rem echo %PATH%
@set RMAN=%ORACLE_HOME%\BIN\rman.exe
@rem *******************获取系统时间,截取yyyy-dd-mm ******************************
@rem*******************如果获取的时间不对,请修改系统时间格式 yyyy-mm-dd dddd*****************************
@rem MONTH=%date:~0,10%
@set MONTH=%date:~0,4%%date:~5,2%%date:~8,2%
@set BACKUP_DIR=C:\%MONTH%
@IF NOT EXIST %BACKUP_DIR% (
mkdir %BACKUP_DIR%
)
@set RQ=%date:~0,4%%date:~5,2%%date:~8,2%
@set RMAN_LOG_FILE=%BACKUP_DIR%\rman_%RQ%.log
@rem echo %RMAN_LOG_FILE%
@rem *******************连接rman 根据实际情况修改******************************
@rem TARGET_CONNECT_STR=/
@set DAY=%date:~12,13%
@REM 0级备份就是进行全库备份,level 1就是备份level 0后改变的数据,level 2就是备份level 1或level 0后改变的数据
@REM 如果前一个备份是level 1那么就备份这之后修改的数据,如果前个备份是level 0那么就备份level 0后的数据
@echo ==== started on %DATE% ==== >>%RMAN_LOG_FILE%
@set BACKUPTYPE=incremental level 2 database
@set NAME=L2_%%d_%%T_%%s_%%U
@if "%DAY%" EQU "一" (
set BACKUPTYPE=incremental level 2 database
set NAME=inc2_%%d_%%T_%%s_%%U
set ARCHIVE=arch3_%%d_%%T_%%U
)
@if "%DAY%" EQU "二" (
set BACKUPTYPE=incremental level 2 database
set NAME=inc2_%%d_%%T_%%s_%%U
set ARCHIVE=arch3_%%d_%%T_%%U
)
@if "%DAY%" EQU "三" (
set BACKUPTYPE=incremental level 1 database
set NAME=inc1_%%d_%%T_%%s_%%U
set ARCHIVE=arch2_%%d_%%T_%%U
)
@if "%DAY%" EQU "四" (
set BACKUPTYPE=incremental level 2 database
set NAME=inc2_%%d_%%T_%%s_%%U
set ARCHIVE=arch3_%%d_%%T_%%U
)
@if "%DAY%" EQU "五" (
set BACKUPTYPE=incremental level 2 database
set NAME=inc2_%%d_%%T_%%s_%%U
set ARCHIVE=arch3_%%d_%%T_%%U
)
@if "%DAY%" EQU "六" (
set BACKUPTYPE=incremental level 2 database
set NAME=inc2_%%d_%%T_%%s_%%U
set ARCHIVE=arch3_%%d_%%T_%%U
)
@if "%DAY%" EQU "日" (
set BACKUPTYPE=incremental level 0 database
set NAME=full0_%%d_%%T_%%s_%%U
set ARCHIVE=arch0_%%d_%%T_%%U
)
@REM backup format 'e:\backup\dbL0_%d_%T.arc' archivelog all delete input;
@rem echo backup %BACKUPTYPE% include current controlfile;
@rem echo sql "ALTER SYSTEM ARCHIVE LOG CURRENT";
@(
echo run {
echo allocate channel Channel1 type disk format '%BACKUP_DIR%\%NAME%';
echo allocate channel Channel2 type disk format '%BACKUP_DIR%\%NAME%';
echo allocate channel Channel3 type disk format '%BACKUP_DIR%\%NAME%';
echo allocate channel Channel4 type disk format '%BACKUP_DIR%\%NAME%';
echo backup section size 4G filesperset 1 %BACKUPTYPE% include current controlfile;
echo sql "ALTER SYSTEM ARCHIVE LOG CURRENT";
echo backup format '%BACKUP_DIR%\%ARCHIVE%' archivelog all delete input;
echo backup current controlfile format '%BACKUP_DIR%\ctl_%d_%T_%s_%%U';
echo }
) | %RMAN% target / nocatalog msglog '%RMAN_LOG_FILE%'
@set ERRLEVEL=%ERRORLEVEL%
@if %ERRLEVEL% NEQ 0 @goto err
@set LOGMSG="备份成功!!"
@goto end
:err
@set LOGMSG="备份失败,请重试!!!"
:end
@echo # >> %RMAN_LOG_FILE%
@echo ==== %LOGMSG% on %DATE% ==== >> %RMAN_LOG_FILE%
@endlocal
@REM End of Main Program -----------------------------------------------------