现在需求是 周1至周六 每天12点,24点,分别进行增量备份
 周日 24点进行 全备份。。
望高手指点~~~~

解决方案 »

  1.   

    刚找到个,没验证;我看可行楼主参考修改。也希望大家修改好了,发个出来用用,现在用ORACLE越来越多了!
        实现的功能是一周一次全备,其他是增量备份.    根据实际情况需要特别关注的地方都标了红.
    @set ORACLE_HOME=E:\oracle92\ora92
    @rem echo %ORACLE_HOME%
    @set ORACLE_SID=myldrk
    @rem echo %ORACLE_SID%
    @set NLS_LANG=utf8
    @rem echo %NLS_LANG%
    @set PATH=%ORACLE_HOME%\bin
    @rem echo %PATH%
    @set RMAN=%ORACLE_HOME%\bin\rman.exe
    @set MONTH=%date:~0,10%
    @set BACKUP_DIR=E:\BACKUP\%MONTH%
    @IF NOT EXIST %BACKUP_DIR% (
    mkdir %BACKUP_DIR%
    )@set RQ=%date:~0,10%
    @set RMAN_LOG_FILE=%BACKUP_DIR%\rman_%RQ%.log@rem echo %RMAN_LOG_FILE%
    @set TARGET_CONNECT_STR=ldrk2/ldrk2@ldrkps
    @set DAY=%date:~13,14%
    @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 > 
    @if "%DAY%" EQU "一" (
    set BACKUPTYPE=incremental level 0 database 
    set >set ARCHIVE=L1_%%d_%%T
    )@if "%DAY%" EQU "二" (
    set BACKUPTYPE=incremental level 1 database 
    set >set ARCHIVE=L1_%%d_%%T
    )@if "%DAY%" EQU "三" (
    set BACKUPTYPE=incremental level 1 database 
    set >set ARCHIVE=L1_%%d_%%T
    )@if "%DAY%" EQU "四" (
    set BACKUPTYPE=incremental level 1 database 
    set >set ARCHIVE=L1_%%d_%%T
    )@if "%DAY%" EQU "五" (
    set BACKUPTYPE=incremental level 1 database 
    set >set ARCHIVE=L1_%%d_%%T
    )@if "%DAY%" EQU "六" (
    set BACKUPTYPE=incremental level 1 database 
    set >set ARCHIVE=L1_%%d_%%T
    )@echo  %DAY%
    @if "%DAY%" EQU "日" (
    set BACKUPTYPE=incremental level 1 database 
    set >set ARCHIVE=L1_%%d_%%T
    )@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 backup %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';
    echo release channel Channel1; 
    echo } 
    ) | %RMAN% target %TARGET_CONNECT_STR% 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 -----------------------------------------------------