Windows系统下Oracle自动备份数据库,删除历史备份数据

方法步骤:
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在电脑附件中找到任务计划程序,然后点击打开
Windows系统下Oracle自动备份数据库,删除历史备份数据_第1张图片
2点击右侧的“创建基本任务”,创建一个任务计划,填写任务名字和描述
Windows系统下Oracle自动备份数据库,删除历史备份数据_第2张图片
3设置任务的执行周期,这里周期选择每天,点击下一步。再设置开始时间,一般选择在夜间备份数据库,点击下一步
Windows系统下Oracle自动备份数据库,删除历史备份数据_第3张图片
4设置执行的操作是,这里是批处理,所以选择程序,点击下一步
5选择前面我们只做的bat批处理文件。即oracle备份语句文件。参数填写文件所在的目录,点击下一步,直接点击完成
Windows系统下Oracle自动备份数据库,删除历史备份数据_第4张图片
6然后双击对应的计划任务名称,出现界面如下图:然后在安全选项中选择“不管用户是否登陆都要运行此程序”然后点击确定
Windows系统下Oracle自动备份数据库,删除历史备份数据_第5张图片
7输入运行此任务的用户帐户信息。输入此pc端密码确定即可

你可能感兴趣的:(数据库)