win- oracle使用exp定时备份脚本
@echo off
echo ================================================
echo Windows环境下Oracle数据库的自动备份脚本
echo 1. 使用当前日期命名备份文件。
echo 2. 自动删除5天前的备份文件和日志文件。
echo ================================================
:: 以“YYYYMMDD”格式取出当前时间。
set BACKUPDATE=%date:~0,4%%date:~5,2%%date:~8,2%
echo %BACKUPDATE%
:: 设置用户名、密码和要备份的数据库
set USER=test1
set PASSWORD=test1
set DATABASE=orcl_44.44.44.44
:: 创建备份目录。
set OraBackPATH=D:\Temp\back
set OraLogPATH=%OraBackPATH%\\logs
:: 判断文件是否存在,不存在则创建
if not exist %OraBackPATH% md %OraBackPATH%
if not exist %OraLogPATH% md %OraLogPATH%
:: 执行备份
echo 开始备份
exp %USER%/%PASSWORD%@%DATABASE% file=%OraBackPATH%\%USER%_%BACKUPDATE%.dmp log=%OraLogPATH%\log_%BACKUPDATE%.log
:: 文件备份成功后,再删除7天前的备份文件和日志文件,以保证数据的完整性
set fileName=%OraBackPATH%\%USER%_%BACKUPDATE%.dmp
if exist %fileName% (
echo 开始删除7天前的备份文件和日志文件
forfiles /p "%OraBackPATH%" /s /m *.* /d -5 /c "cmd /c del @path"
forfiles /p "%OraLogPATH%" /s /m *.* /d -5 /c "cmd /c del @path"
echo 备份文件和日志文件删除成功
) else (
echo %fileName%备份为成功,备份文件不存在,不执行删除7天前的备份文件和日志文件
)
:: 强制等待10秒,只能按下CTRL+C来跳过
TIMEOUT /T 10 /NOBREAK
echo over