bat命令备份oracle数据库,并且删除7天之前的数据文件

来源:互联网 发布:xmind 8 mac 注册码 编辑:程序博客网 时间:2024/06/07 12:34

用批处理命令备份oracle数据库,我是用在windows server 2008 服务器上,并且创建了定时任务,让他7天执行一次.下面贴出代码:

@echo offecho ================================================ echo  Windows环境下Oracle数据库的自动备份脚本echo  1. 使用当前日期命名备份文件。echo  2. 自动删除7天前的备份。echo ================================================::以“YYYYMMDD”格式取出当前时间。set BACKUPDATE=%date:~0,4%%date:~5,2%%date:~8,2%set CURTIME=%time:~0,2%REM 小时数如果小于10,则在前面补0if "%CURTIME%"==" 0" set CURTIME=00if "%CURTIME%"==" 1" set CURTIME=01if "%CURTIME%"==" 2" set CURTIME=02if "%CURTIME%"==" 3" set CURTIME=03if "%CURTIME%"==" 4" set CURTIME=04if "%CURTIME%"==" 5" set CURTIME=05if "%CURTIME%"==" 6" set CURTIME=06if "%CURTIME%"==" 7" set CURTIME=07if "%CURTIME%"==" 8" set CURTIME=08if "%CURTIME%"==" 9" set CURTIME=09set CURTIME=%CURTIME%%time:~3,2%%time:~6,2% ::设置用户名、密码和要备份的数据库。set USER=sjptset PASSWORD=sjptset DATABASE=orclset nls_lang=american_america.al32utf8::创建备份目录。if not exist "D:\backup\data\%BACKUPDATE% "     mkdir D:\backup\data\%BACKUPDATE%if not exist "D:\backup\log\%BACKUPDATE% "      mkdir D:\backup\log\%BACKUPDATE%set DATADIR=D:\backup\data\%BACKUPDATE%set LOGDIR=D:\backup\log\%BACKUPDATE%set DELDATADIR=D:\backup\dataset DELLOGDIR=D:\backup\log::exp %USER%/%PASSWORD%@%DATABASE%  file=%DATADIR%\%USER%_%BACKUPDATE%%CURTIME%.dmp log=%LOGDIR%\log_%BACKUPDATE%%CURTIME%.logecho 数据库文件备份成功,所在目录为: %DATADIR%echo 正在查找旧备份文件创建时间...::删除30天前的备份。::先判断要删除的文件是否存在for /r %DELDATADIR% %%a in (*) do for /f "tokens=1,2* delims= " %%b in ('dir /tc "%%a" ^| find /i "%%~nxa"') do (echo "%%b %%c"set /a dataCount+=1)for /r %DELLOGDIR% %%a in (*) do for /f "tokens=1,2* delims= " %%b in ('dir /tc "%%a" ^| find /i "%%~nxa"') do (echo "%%b %%c"set /a logCount+=1)if %dataCount% gtr 1 goto beginCleandata:iscleanlogif %logCount% gtr 1 goto beginCleanlogif %dataCount% equ 1 goto endif %logCount% equ 1 goto end::删除文件、删除空文件夹:beginCleandataforfiles /p "%DELDATADIR%" /s /m *.* /d -7 /c "cmd /c del @path"for /f "tokens=*" %%a in ('dir /b /ad /s "%DELDATADIR%"^|sort /r') do rd "%%a"goto iscleanlog:beginCleanlogforfiles /p "%DELLOGDIR%" /s /m *.* /d -7 /c "cmd /c del @path"for /f "tokens=*" %%a in ('dir /b /ad /s "%DELLOGDIR%"^|sort /r') do rd "%%a"echo 旧备份文件删除成功!pauseexit:endecho 无旧备份文件。echo 执行成功。pause


原创粉丝点击