一个定时备份Oracle数据库脚本,并删除30天之前的备份数据

 上一篇解释了在什么情景下有了备份数据库的需求,以及加了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、退出该脚本。

你可能感兴趣的:(Oracle)