Windows环境下Oracle数据库的定时自动备份并打包

1、首先在D盘创建一个文件夹命名为dbbackup

2、在文件夹下创建一个bat文件命名为dbbackup.bat

 3、在bat文件编写以下内容

 

@echo off   

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

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

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

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

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

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

::注意:如果TIME 是00点的时候,电脑显示的是0不是00所以%time:~0,2%就会报错(LRM-00112: 参数 'log' 不允许有多个值)

::所以用%time:~0,2%%time:~3,2%%time:~6,2%(运行脚本的时间一定是在10-23点区间,否则0-9(H)脚本调用函数错误,无法运行)

::如果要用%time:~1,1%%time:~3,2%%time:~6,2% (建议运行脚本的时间在0-9点这个区间,如果是>9点,比如13点。会造成只显示个位数字3,从而影响时间的整体准确性)

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

::创建备份目录。  

if not exist "D:dbbackupdata"    mkdir D:dbbackupdata  

if not exist "D:dbbackuplog"     mkdir D:dbbackuplog  

set DATADIR=D:dbbackupdata

set LOGDIR=D:dbbackuplog


::导出数据和日志


exp userid='scott/123456@orcl'  file=%DATADIR%data_%BACKUPDATE%.dmp log=%LOGDIR%log_%BACKUPDATE%.log  

::压缩打包 (电脑需要先安装好WinRAR)

"C:/Program Files/WinRAR/rar.exe" a %DATADIR%data_%BACKUPDATE%.rar %DATADIR%data_%BACKUPDATE%.*

"C:/Program Files/WinRAR/rar.exe" a %LOGDIR%log_%BACKUPDATE%.rar %LOGDIR%log_%BACKUPDATE%.*


::打包完成删除原文件


del %DATADIR%data_%BACKUPDATE%.dmp

del %LOGDIR%log_%BACKUPDATE%.log

::删除15天前的备份。

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

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

4、添加任务计划程序定时执行备份

1)点击搜索,输入任务计划程序,点击打开

        

2)点击创建任务,常规项里填写名称,触发器项里按需求新建触发器,操作项添加Bat文件路径,条件项和设置项都按需求选择,最后点击确定即可

 

    

  5

 

5、最后执行效果如下:

 

 参考:https://blog.csdn.net/CoolCST/article/details/102782824

    https://blog.csdn.net/weixin_34415923/article/details/92987973

原文地址:https://www.cnblogs.com/Mrshuang11/p/14210063.html