WINDOWS 服务器下自动备份oracle数据库

1 篇文章 0 订阅
1 篇文章 0 订阅

一、window下自动备份数据库的步骤

1、创建自动备份数据库bat文件

2、在window下创建定时器任务,定时执行1中的bat文件

二、自动备份数据库bat文件

1、创建备份文件及日志文件的文件夹(路径)

创建文件夹的命令:md <路径名>

因为是在bat文件中,会执行不止一次,可以加上一个判断条件,命令:if not exist <路径名> md <路径名>

2、导出数据库数据

备份整个库:exp <用户名>/<密码>@<实例名> file=<备份文件路径 .dmp文件> log=<日志文件路径 .log文件>full=y

    备份某个用户的所有表:exp <用户名>/<密码>@<实例名> file=<备份文件路径 .dmp文件> log=<日志文件路径 .log文件> owner=(<user1>,<user2>)

     备份某个用户的某几张表:exp <用户名>/<密码>@<实例名> file=<备份文件路径 .dmp文件> log=<日志文件路径 .log文件> tables=(<table1>,<table2>) 

注意:权限的问题

3、定时删除过期的备份文件及日志

定时删除文件的命令格式:forfiles /p "<目录文件夹>" /s /m <筛选条件> /d -<天数> /c "cmd /c del @path"

三、 window下创建定时器任务

1、进入window管理工具->任务计划程序

2、点击右上角部分的“创建基本任务”,在弹出的选项卡中填入任务的名称及描述,然后“下一步”

3、然后创建定时器,先选择周期,在选择执行的具体时间,然后“下一步”

4、选择要执行的操作,这里选择第一项“执行程序”,然后“下一步”

5、选择要执行的程序或bat文件,完成

四、注意要点

1、因为是自动备份,所以文件名以日期自动命名,

set var1=%date%     #这样得到的是日期,格式为 yyyy-mm-dd

set var2=%time% #这样得到的是时间,格式为 hh:mm:ss

set var=%date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2%%time:~6,2%  #这样得到的是日期时间字符串 格式yyyyMMddhhmmss

这个字符串可以用来给自动生成的文件命名吗?不能,这里有一个坑 日期格式是固定的,但是时间格式是不固定的,hh的位数可能为1(小于10点的时候),它不会在签名自动补零,而是空格占位

我就在这里卡了好几天,因为我测试是在白天,一点问题没有,定时器设定的是凌晨,所以,测试一点问题没有,但就是正式应用执行不成功,定时器返回(0x1)

所以需要处理一下,将得到的日期时间字符串处理一下,将空格替换为0

set var=%date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2%%time:~6,2%

set var=%var: =0%

        这样就可以得到可以作为文件名的日期字符串

2、oracle导出命令exp

如果数据库的密码含有特殊字符,则需要将命令处理一下,如用户名是test,密码是test@20170719,实例名是orcl,导出为d盘下1.dmp,日志为d盘下1.log,则导出test用户所有表的命令为

exp test/"""test@20170719"""@orcl file=D:\1.dmp log=D:\1.log owner=test

2、定时器的权限问题

五、完整的bat文件

@echo off 
echo 开始备份数据库
if not exist D:\oraclebackup\files md D:\oraclebackup\files
if not exist D:\oraclebackup\logs md D:\oraclebackup\logs
 
set var=%date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2%%time:~6,2%
set var=%var: =0%
exp test/"""test@20170719"""@orcl file=D:\oraclebackup\files\hn_%var%.dmp log=D:\oraclebackup\logs\hn_%var%.log owner=test
 
echo 删除7天前的备份记录
forfiles /p "D:\oraclebackup" /s /m  *.dmp /d -7 /c "cmd /c del @path"
forfiles /p "D:\oraclebackup" /s /m  *.log /d -7 /c "cmd /c del @path"

rem 下面两行是用来调试用的,阻止命令行窗口自动关闭,保留bat文件的执行结果及错误信息,正式时可以去掉
echo 请按任意键开始或结束
pause>nul

echo 任务完成!
exit

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值