今天需要在一个老的Windows2003上进行一个oracle10G的备份脚本的编写。

    ip1为安装了10G数据库的Windows2003系统(D:dbbackup为数据库备份目录),ip2为没有安装的正常的Windows2003系统(d:dbbackup2为数据库备份目录),先在安装了oracle的机器上进行备份,写一个BAT脚本,内容如下:

@echo off  
echo 正在备份Oracle数据库,请稍等...... 
set mydate=%DATE:~0,10%   //2016-1-6 日期格式
exp user/mima@orc full=y  file=D:\dbbackup\orc_%mydate%.dmp buffer=655350000 log=d:\dbbackup\orc_%mydate%.log    //不解释很简单
forfiles /p "D:\dbbackup" /s /m *.* /d -7 /c "cmd /c del @path"   //删除7天以前的文件
echo 任务完成!

    把上面的bat加入计划任务就行了

    我把ip2的一个目录共享给了ip1映射成X盘,把ip1备份的数据库文件复制一份到ip2上进行备份,双备份目的。

脚本如下

   

@echo off  
echo 正在复制数据库,请稍等...... 
set mydate=%DATE:~0,10%
copy d:\dbbackup\orc_%mydate%.dmp \\192.168.1.2\dbbackup2
copy d:\dbbackup\orc_%mydate%.log \\192.168.1.2\dbbackup2 //这里不能直接写映射的X盘因为写了Windows2003计划任务不会执行的,必须写网络URC地址
echo 任务完成!

   之后我在IP2上加了一个任务删除7天的备份,我在ip1上加了不执行,只好用这种方法了,在本机上删除

脚本如下:

@echo off  
echo 正在删除7天前Oracle数据库,请稍等...... 
forfiles /p "D:\dbbackup2" /s /m *.* /d -7 /c "cmd /c del @path"
echo 任务完成!

 

使用windows控制台的copy命令达到修改文件创建时间的目的可以用来测试forfiles脚本的成功运行,方法如下:

1. 修改系统时间为你需要的修改到的目标时间;

2. 运行命令:copy 文件名+,,(注意是连续两个英文逗号).