方法步骤:
1.创建备份目录d:\backup, 创建批处理命令Bak.bat,编写备份脚本 。
2.创建任务计划程序触发器。
具体实现:
@echo off
echo ================================================
echo Windows环境下Oracle数据库的自动备份脚本
echo 1. 使用当前日期命名备份文件。
echo 2. 自动删除7天前的备份。
echo ================================================
::以“YYYYMMDD”格式取出当前时间。
set BACKUPDATE=%date:~0,4%%date:~5,2%%date:~8,2%
::设置用户名、密码和要备份的数据库。
set USER=xxx
set PASSWORD=123456
set DATABASE=ORCL
::创建备份目录。
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 %USER%/%PASSWORD%@%DATABASE% file=%DATADIR%\data_%BACKUPDATE%.dmp log=%LOGDIR%\log_%BACKUPDATE%.log
rar %DATADIR%\data_%BACKUPDATE%.rar
::删除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
简单的以星期的命名导出
@echo off
set filename=e:\rdzxbf\%date:~11,3%
DEL %filename%.dmp
DEL %filename%.log
exp userid=kjb/dreamsoft@ORCL file=%filename%.dmp log=%filename%.log
说明:echo 文字输出 。 set 设置变量 ,用%变量名% 来获取。
exp命令是oracle提供的dump备份命令
forfiles是windows的文件查找命令
pause 执行的时候在cmd输出显示
del 删除文件
- %date%的值
在不同的系统、语言版本下可能是不一样的,控制面板里面区域选项的设定也会改变%date%的值。请先在命令行中测试 echo %date% 的返回值。
windows下%date% 输出的是2017/04/06 周四 这种格式,%date:~0,11% 输出的是2017/04/06。
~后的第一个参数是要截取的起始位置(从0开始),第二个参数是要截取的长度,如没有则是截取到最后,参数可酌情修改。
如需要准确的时间做为文件名,请用%time%函数,参数同上。
- forfiles参数说明:
/P 可是搜索的路径。在我们这里就是要在哪个目录寻找要删除的文件
/s 包含子目录
/m 根据搜索掩码搜索文件。默认为,如果要找备份处dump文件,格式为.dmp
/d 文件修改时间在某个时间之前或者之后。-7 表示7天之前的文件。
/c 表示为每个文件执行的命令,如果要删除该文件可以为”cmd /c del /F /s /q @file”。其中变量@file表示该文件名 f s q表示强制静默删除可以不用;
默认命令是 “cmd /c echo @file”。下列变量
可以用在命令字符串中:
@file - 返回文件名。
@fname - 返回不带扩展名的文件名。
@ext - 只返回文件的扩展。
@path - 返回文件的完整路径。
@relpath - 返回文件的相对路径。
@isdir - 如果文件类型是目录,返回 “TRUE”;
如果是文件,返回 “FALSE”。
@fsize - 以字节为单位返回文件大小。
@fdate - 返回文件上一次修改的日期。
@ftime - 返回文件上一次修改的时间。
例如:
FORFILES /?
FORFILES
FORFILES /P C:\WINDOWS /S /M DNS*.*
FORFILES /S /M *.txt /C "cmd /c type @file | more"
FORFILES /P C:\ /S /M *.bat
FORFILES /D -30 /M *.exe
/C "cmd /c echo @path 0x09 在 30 前就被更改。"
FORFILES /D 2001-01-01
/C "cmd /c echo @fname 在 2001年1月1日就是新的。"
FORFILES /D +2006-11-25 /C "cmd /c echo @fname 今天是新的。"
FORFILES /M *.exe /D +1
FORFILES /S /M *.doc /C "cmd /c echo @fsize"
FORFILES /M *.txt /C "cmd /c if @isdir==FALSE notepad.exe @file"
删除三十天前的文件forfiles /p "d:\108" /s /m *.* /d -30 /c "cmd /c del @path"
创建任务计划程
1在电脑附件中找到任务计划程序,然后点击打开
2点击右侧的“创建基本任务”,创建一个任务计划,填写任务名字和描述
3设置任务的执行周期,这里周期选择每天,点击下一步。再设置开始时间,一般选择在夜间备份数据库,点击下一步
4设置执行的操作是,这里是批处理,所以选择程序,点击下一步
5选择前面我们只做的bat批处理文件。即oracle备份语句文件。参数填写文件所在的目录,点击下一步,直接点击完成
6然后双击对应的计划任务名称,出现界面如下图:然后在安全选项中选择“不管用户是否登陆都要运行此程序”然后点击确定
7输入运行此任务的用户帐户信息。输入此pc端密码确定即可