windows 全量+增量備份指令碼bat

abin1703發表於2020-06-26

@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 -----------------------------------------------------


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30345407/viewspace-2700665/,如需轉載,請註明出處,否則將追究法律責任。

相關文章