说明

  • Windows下的Oracle11g自动备份和自动删除过期备份文件

  • 写一个数据库备份、删除脚本,加入到windows任务计划里,每天定时执行即可

环境

在 Oracle 服务器本机上操作,远程备份参考 Oracle-Windows脚本实现远程自动备份

步骤

1. 新建txt文档,内容如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
@echo off  

echo ================================================

echo Windows环境下Oracle数据库的自动备份脚本

echo 1. 使用当前日期命名备份文件。

echo 2. 自动删除14天前的备份。

echo ================================================

::以“YYYYMMDD”格式取出当前时间。

set BACKUPDATE=%date:~0,4%%date:~5,2%%date:~8,2%

::设置用户名、密码和要备份的数据库。

set USER=gms

set PASSWORD=gms

set SID=orcl

::创建备份目录。

if not exist "E:\oraclebackup\data" mkdir E:\oraclebackup\data

if not exist "E:\oraclebackup\log" mkdir E:\oraclebackup\log

set DATADIR=E:\oraclebackup\data

set LOGDIR=E:\oraclebackup\log

exp %USER%/%PASSWORD%@%SID% file=%DATADIR%\%BACKUPDATE%.dmp

::删除14天前的备份。

forfiles /p "%DATADIR%" /s /m *.* /d -14 /c "cmd /c del @path"

forfiles /p "%LOGDIR%" /s /m *.* /d -14 /c "cmd /c del @path"

exit

脚本说明:

1
2
3
4
5
6
7
8
9
@:表示执行脚本时,@行之后的内容不显示;

echo off:表示此行和之后的内容不显示;

echo:表示执行脚本时,此行的内容执行脚本显示出来;

:::注释,类似于sql语句的--;

%date:~0,4%%date:~5,2%%date:~8,2% :WINDOWS的时间格式是2017/09/07,所以意思就是从左往右数第0个之后,取4位,即2017;从左往右数第5个之后,取2位,即09,从左往右数第8个之后,取2位,即07,最终备份文件名就是20170907.dmp

2. 上面 txt 文档另存为.bat格式,如图所示

image-20201111100811874

3. window添加定时任务(以Win7为例)

image-20201111100840599 image-20201111101008769 image-20201111101025768 image-20201111101041191 image-20201111101104171 image-20201111101116383 image-20201111101147686

这个执行的脚本文件,就是之前在第2步制作的bat文件

image-20201111101206620 image-20201111101230952

4. 完成

这个自动备份脚本会在每天10:43的时候执行,将数据备份到E:\oraclebackup\data文件夹下 格式为:20151212.dmp