Oracle自动备份,且预设备份脚本保留时长

编写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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值