编写bat脚本,在服务器中添加定时任务,设定执行时间间隔
@echo off
: basedata
set ip=数据库所在服务器IP
set user=用户名
set password=密码
set sid=数据库SID,如果非本机,则填写IP/SID,或配置好的tnsname
set ext=导出的文件后缀,一般是dmp
set /a backupDays=183 (备份文件保留时间,超过自动删除,单位天)
set oracleBackupPath=D:\test\ (备份文件夹路径)
set logs=%oracleBackupPath%\logs.txt
set day=%date:~8,2%
set month=%date:~5,2%
set /a year=%date:~0,4%
if not exist %oracleBackupPath% md %oracleBackupPath%
echo %year%-%month%-%day% >> %logs%
set backupingFilePath=%oracleBackupPath%\%user%_%year%-%month%-%day%.%ext%
echo backupdata >> %logs%
exp %user%/%password%@%sid% file=%backupingFilePath%
if exist %backupingFilePath% (
echo backupcomplete %user%_%year%-%month%-%day%.%ext%
echo backupcomplete %user%_%year%-%month%-%day%.%ext% >> %logs%
) else (
echo backupfaile
echo backupfaile >> %logs%
pause
exit
)
rem delete backupDays's backup
call :daysOfLastMonth "%year%-%month%-%day%" %backupDays% newday
set day=%newday:~6,2%
set month=%newday:~4,2%
set /a year=%newday:~0,4%
set deleteBackupFilePath=%user%_%year%-%month%-%day%.%ext%
echo %user%_%year%-%month%-%day%.%ext%
echo %oracleBackupPath%%deleteBackupFilePath% >> %logs%
if exist %oracleBackupPath%%deleteBackupFilePath% (
del %oracleBackupPath%%deleteBackupFilePath%
echo delcomplete >> %logs%
) else (
echo the document isn't exist >> %logs%
)
echo -----------------------------------------------------end >> %logs%
:daysOfLastMonth
@echo off&setlocal
for /f "tokens=1-3 delims=/-:\, " %%a in ('echo/%~1') do (
set /a yy=%%a,mm=100%%b%%100,dd=100%%c%%100)
set /a z=14-mm,z/=12,y=yy+4800-z,m=mm+12*z-3,j=153*m+2
set /a j=j/5+dd+y*365+y/4-y/100+y/400-2472633
set /a i=j-%~2,a=i+2472632,b=4*a+3,b/=146097,c=-b*146097,c/=4,c+=a
set /a d=4*c+3,d/=1461,e=-1461*d,e/=4,e+=c,m=5*e+2,m/=153,dd=153*m+2,dd/=5
set /a dd=-dd+e+1,mm=-m/10,mm*=12,mm+=m+3,yy=b*100+d-4800+m/10
(if %mm% LSS 10 set mm=0%mm%)&(if %dd% LSS 10 set dd=0%dd%)
endlocal&set %~3=%yy%%f%%mm%%f%%dd%&goto :EOF