@echo off
echo ================================================
echo Windows环境下Oracle数据库的自动备份脚本
echo 1. 使用当前日期+时间命名备份文件。
echo 2. 自动删除7天前的备份。
echo ================================================
::以“YYYYMMDDHHMISS”格式取出当前时间。
set BACKUPDATE=%date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2%%time:~6,2%
echo %BACKUPDATE%
::设置用户名、密码和要备份的数据库。
set USER=用户名
set PASSWORD=密码
set DATABASE=192.168.141.26:1521/orcl
::创建备份目录。
if not exist "D:\backup\data" mkdir D:\database\data
if not exist "D:\backup\log" mkdir D:\database\log
set DATADIR=D:\database\data\
set LOGDIR=D:\database\log\
rem echo %DATADIR%
echo %LOGDIR%
exp %USER%/%PASSWORD%@%DATABASE% file=%DATADIR%%BACKUPDATE%.dmp log=%LOGDIR%%BACKUPDATE%.log
echo 删除7天前的备份。
forfiles /p %DATADIR% /s /m *.* /d-7 /c "cmd /c del @file"
forfiles /p %LOGDIR% /s /m *.* /d -7 /c "cmd /c del @file"
exitx
https://www.cnblogs.com/zhjx0521/p/5330820.html
(2) exp方式导出:
1、根据日期自动生成 Oracle 备份文件
@echo off
echo 正在备份Oracle数据库,请稍等......
exp userid='用户名/密码@SID' file=D:\bak\res_%date:~0,4%%date:~5,2%%date:~8,2%.dmp log=D:\bak\res_%date:~0,4%%date:~5,2%%date:~8,2%.log owner=res
echo 任务完成!
2、根据日期时间分秒自动生成 Oracle 备份文件
@echo off
echo 正在备份Oracle数据库,请稍等......
exp userid='用户名/密码@SID' file=D:\bak\res_%date:~0,4%%date:~5,2%%date:~8,2%%Time:~0,2%%Time:~3,2%%Time:~6,2%.dmp log=D:\bak\res_%date:~0,4%%date:~5,2%%date:~8,2%%Time:~0,2%%Time:~3,2%%Time:~6,2%.log
echo 任务完成!
3、用exit结尾备份完后自动退出:
@echo off
echo ================================================
echo Windows环境下Oracle数据库的自动备份脚本
echo 1. 使用当前日期命名备份文件。
echo 2. 自动删除7天前的备份。
echo ================================================
::以“YYYYMMDD”格式取出当前时间。
set BACKUPDATE=%date:~0,4%%date:~5,2%%date:~8,2%%Time:~0,2%%Time:~3,2%%Time:~6,2%
::创建备份目录。
if not exist "D:\backup\data" mkdir D:\backup\data
if not exist "D:\backup\log" mkdir D:\backup\log
set DATADIR=D:\backup\data
set LOGDIR=D:\backup\log
exp userid='用户名/密码@SID' file=%DATADIR%\data_%BACKUPDATE%.dmp log=%LOGDIR%\log_%BACKUPDATE%.log
::删除7天前的备份。
forfiles /p "%DATADIR%" /s /m *.* /d -7 /c "cmd /c del @path"
forfiles /p "%LOGDIR%" /s /m *.* /d -7 /c "cmd /c del @path"
exit
注:如果有时我们写bat脚本执行时一闪而过,无法排错;那么我可以在脚本的最后加个pause(如上面的脚本可以把exit换成pause),用pause结尾执行完后,会提示按任意键来继续或退出,这样我就能知道是什么报错。
expdp方法导出:
用exit结尾备份完后自动退出:
@echo off
echo ================================================
echo Windows环境下Oracle数据库的自动备份脚本
echo 1. 使用当前日期命名备份文件。
echo 2. 自动删除10天前的备份。
echo 3.使用expdb命令导出需要先在数据库中创建备份文件存贮目录,sql如下:
echo create directory backdir as 'D:\backup\data';
echo ================================================
::以“YYYYMMDD”格式取出当前时间。
set BACKUPDATE=%date:~0,4%%date:~5,2%%date:~8,2%%Time:~0,2%%Time:~3,2%%Time:~6,2%
::设置用户名、密码和sid。
set bakdbname=app
set bakdbpasswd=123
set sid=orcl
set dumpbame=appbak
set bakdbhome=D:\backup\data
::创建备份目录。
if not exist "D:\backup\data" mkdir D:\backup\data
::expdp备份
expdp %bakdbname%/%bakdbpasswd%@%sid% directory=backdir dumpfile=%dumpbame%_%BACKUPDATE%.dmp logfile=%dumpbame%_%BACKUPDATE%.log
::切换目录
d:
cd %bakdbhome%
::调用rar进行压缩
"C:\Program Files\WinRAR\Rar" a -m5 -dw %dumpbame%_%BACKUPDATE%".zip" %dumpbame%_%BACKUPDATE%.DMP
::删除10天前的备份。
forfiles /p "%bakdbhome%" /s /m *.zip /d -10 /c "cmd /c del @path"
forfiles /p "%bakdbhome%" /s /m *.log /d -10 /c "cmd /c del @path"
exit