上一篇解释了在什么情景下有了备份数据库的需求,以及加了full=y之后出现没有权限到处等问题。下面就将优化后的脚本呈现出来,大家可以直接使用,不过有以下几种不足之后,后期再做优化:
1、由于下面使用的是exp导出命令,需要安装oracle Client;
2、oracle不同版本之间的数据备份会出问题;
3、在oracle分布式环境下未测试通过(该环境下请谨慎使用)。
@echo off
echo ================================================
echo Windows环境下Oracle数据库的自动备份脚本
echo ================================================
::以“YYYYMMDD”格式取出当前时间。
set BACKUPDATE=%date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2%%time:~6,2%
::设置用户名、密码和要备份的数据库。
set USER=kqportal
set PASSWORD=kqportal
set DATABASE=ORCL
::创建备份目录。
if not exist "D:\ksk\OrclDBackup\backupdbdir"
mkdir D:\ksk\OrclDBackup\backupdbdir
:: 为删除过期文件的命令,-d -30 删除30天的文件;
forfiles /p "D:\ksk\OrclDBackup\backupdbdir" /m kqportal_orcl_*.dmp -d -30 /c "cmd /c del /f @path"
::注意不加full=y
exp '%USER%/%PASSWORD%@%DATABASE%' file=D:\ksk\OrclDBackup\backupdbdir\kqportal_orcl_%BACKUPDATE%.dmp
exit
上述脚本可以再windows下设置一个windows定时任务进行执行,即可实现定时备份数据库的目的(已测试通过,请放心使用^$$^)。
上面的备注些的比较详细,主要有以下几个点:
1、取出当前系统时间,精确到秒;
2、创建备份目录,即备份文件存储路径;
3、删除备份目录下30天之前的备份文件,以保证服务器磁盘在能够承受的范围内;
4、执行备份数据库的操作;
5、退出该脚本。