您的位置:首页 > 数据库 > Oracle

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

2017-04-06 15:58 731 查看
方法步骤:

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端密码确定即可
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: