windows 全量+增量备份脚本bat

来源:这里教程网 时间:2026-03-03 15:56:01 作者:

@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=arch2_%%d_%%T_%%U ) @if "%DAY%" EQU "二" ( set BACKUPTYPE=incremental level 2 database set NAME=inc2_%%d_%%T_%%s_%%U set ARCHIVE=arch2_%%d_%%T_%%U ) @if "%DAY%" EQU "三" ( set BACKUPTYPE=incremental level 1 database set NAME=inc1_%%d_%%T_%%s_%%U set ARCHIVE=arch1_%%d_%%T_%%U ) @if "%DAY%" EQU "四" ( set BACKUPTYPE=incremental level 2 database set NAME=inc2_%%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=arch2_%%d_%%T_%%U ) @if "%DAY%" EQU "六" ( set BACKUPTYPE=incremental level 2 database set NAME=inc2_%%d_%%T_%%s_%%U set ARCHIVE=arch2_%%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 -----------------------------------------------------

相关推荐