windows server2012服务器bat+计划任务实现oracle数据库自动备份

主要是通过windows任务计划来定时执行数据库备份脚本(exp,逻辑备份)

1.编写数据库备份脚本

新建文本文档bak.txt,文档内容如下:

@echo off
echo ******数据导出开始******
set CURDATE=%date:~0,4%-%date:~5,2%-%date:~8,2%
set CURTIME=%time:~0,2%

REM 小时数小于10时在前面补0
if "%CURTIME%" lss 10 set CURTIME=0%CURTIME%
REM set CURTIME=%CURTIME%%time:~3,2%%time:~6,2%

REM 设置所有者、用户名和密码,按照实际信息修改即可,SID一般默认是orcl
set OWNER=库表所有者
set USER=用户名
set PASSWORD=密码
set SERVERNAME=ip:port/SID
REM 创建备份目录及文件夹 if not exist "D:\backup\database"  mkdir D:\backup\database if not exist "D:\backup\database\%CURDATE%\" mkdir D:\backup\database\%CURDATE%\ set CURDIR=D:\backup\database\%CURDATE% set FILENAME=%CURDIR%\%OWNER%-%CURDATE%-%CURTIME%.dmp set EXPLOG=%CURDIR%\%OWNER%-%CURDATE%-%CURTIME%-log.log REM 调用ORACLE的exp命令导出用户数据 echo exp.exe %USER%/%PASSWORD%@%SERVERNAME% file=%FILENAME% log=%EXPLOG% owner=%OWNER%

REM 需修改为exp命令所在实际路径信息或者将exp.exe添加到系统环境变量 盘符\路径
\exp.exe %USER%/%PASSWORD%@%SERVERNAME% file=%FILENAME% log=%EXPLOG% owner=%OWNER% echo ******导出文件:%FILENAME% echo ******导出日志:%EXPLOG% echo ******数据导出结束******
REM 若需加密压缩且删除原有文件需取下面两行注释,且将WinRAR实际路径信息修改
REM set RAR_CMD="C:\Program Files\WinRAR\WinRAR.exe"
REM %RAR_CMD% a -ptest123 -df "%CURDIR%\%OWNER%-%CURDATE%-%CURTIME%-back.rar" "%FILENAME%" "%EXPLOG%"

REM pause命令会让脚本程序暂停并打印输出 “请按任意键继续...”字样,若脚本不加pause,批处理命令执行完成后cmd窗口即关闭;建议调试无问题后注释掉pause命令以防后续定时计划出现问题 pause

然后将bak.txt文件后缀修改为bat。

2.配置windows任务计划程序定时执行脚本

打开windows任务计划程序,如下所示:

 

 点击右侧【创建任务】,如下所示:

 

 勾选红框所示选项(建议实现administrator用户来执行,【配置】栏可按照实际选择)。

然后选择【触发器】并点击【新建】:

 

 设置任务计划执行的周期、开始时间后,点击【操作】,并点击【新建】来新建操作:

 

 点击红框后的浏览,选择数据库备份脚本bak.bat;

【条件】界面按需勾选;

【设置】界面需注意如下红框选项:

 

特别是规则适用的选择,默认是【请勿启动新实例】

如果bak.bat脚本中注释了末尾的pause命令,这里用默认的是没有问题的,计划任务会正确定期执行;

如果脚本中没有注释pause,需要选择【停止现有实例】,否则计划任务在第二次执行时,会提示【操作员或系统管理员拒绝了请求】

 

posted @ 2022-01-04 11:16  诟笑  阅读(823)  评论(0编辑  收藏  举报