windows 2003下oracle数据库定时自动备份

来源:互联网 发布:c语言从入门到精通pdf 编辑:程序博客网 时间:2024/05/19 17:07

步骤一:创建bacup.bat脚本


------------开始---------------@echo off::--------------------------------------------------::导出数据库,保留90天的备份::--------------------------------------------------::***********************获得以前的日期*删除90天的******************************::定义距离今天多少天日期开始删除set N=90::定义今天的日期set CURRENT_DATE=%date:~0,4%%date:~5,2%%date:~8,2%::定义获得年的标示set CURRENT_YEAR=%date:~0,4%::定义去年的标示set /a LAST_YEAR=%CURRENT_YEAR%-1::定义获得月的标示set SIGNMONTH=%date:~5,1%if %SIGNMONTH% EQU 0 (set CURRENT_MONTH=%date:~6,1%) else (set CURRENT_MONTH=%date:~5,2%)::定义上个月的标示if %CURRENT_MONTH% GTR 1 (set /a LAST_MONTH=%CURRENT_MONTH%-1) else (set /a LAST_MONTH=12)::定义获得天的标示set SIGN=%date:~8,1%if %SIGN% EQU 0 (set CURRENT_DAY=%date:~9,1%) else ( set CURRENT_DAY=%date:~8,2%)::判断是否闰年:0表示非闰年,1表示闰年set /a CONDITION1=%CURRENT_YEAR%%%4set /a CONDITION2=%CURRENT_YEAR%%%400set /a CONDITION3=%CURRENT_YEAR%%%100if %CONDITION1% EQU 0 ( if %CONDITION2% EQU 0 (  set /a LEAP_YEAR_CHECK=1  ) else if %CONDITION3% NEQ 0 (    set /a LEAP_YEAR_CHECK=1) else (     set /a LEAP_YEAR_CHECK=0)) else (    set /a LEAP_YEAR_CHECK=0)::定义上个月的天数,如果是闰年,则2月份是29天,否则为28天set LAST_MONTH_DAYS=0if %LAST_MONTH% EQU 1 (set /a LAST_MONTH_DAYS=31)if %LAST_MONTH% EQU 3 (set /a LAST_MONTH_DAYS=31)if %LAST_MONTH% EQU 5 (set /a LAST_MONTH_DAYS=31)if %LAST_MONTH% EQU 7 (set /a LAST_MONTH_DAYS=31)if %LAST_MONTH% EQU 8 (set /a LAST_MONTH_DAYS=31)if %LAST_MONTH% EQU 10 (set /a LAST_MONTH_DAYS=31)if %LAST_MONTH% EQU 12 (set /a LAST_MONTH_DAYS=31)if %LAST_MONTH% EQU 4 (set /a LAST_MONTH_DAYS=30)if %LAST_MONTH% EQU 6 (set /a LAST_MONTH_DAYS=30)if %LAST_MONTH% EQU 9 (set /a LAST_MONTH_DAYS=30)if %LAST_MONTH% EQU 11 (set /a LAST_MONTH_DAYS=30)if %LAST_MONTH% EQU 2 (if %LEAP_YEAR_CHECK% EQU 0 (set /a LAST_MONTH_DAYS=28) else (set /a LAST_MONTH_DAYS=29))if %LAST_MONTH_DAYS% EQU 0 (goto END)::定义最终的年set BEFORE_YEAR=0::定义最终的月set BEFORE_MONTH=0::定义最终的天set BEFORE_DAY=0::定义距离今天N天前的日期set BN_DAYS_AGO=0::*********************变量定义完成**********************************::如果今天天数大于Nif %CURRENT_DAY% GTR %N% ( set /a BEFORE_YEAR=%CURRENT_YEAR%)&( set /a BEFORE_MONTH=%CURRENT_MONTH%)&( set /a BEFORE_DAY=%CURRENT_DAY%-%N% ) else if %CURRENT_MONTH% NEQ 1 (   set /a BEFORE_YEAR=%CURRENT_YEAR%)&(   set /a BEFORE_MONTH=%LAST_MONTH%)&(   set /a BEFORE_DAY=%LAST_MONTH_DAYS%-%N%+%CURRENT_DAY%   ) else (    set /a BEFORE_YEAR=%LAST_YEAR%)&(    set /a BEFORE_MONTH=%LAST_MONTH%)&(    set /a BEFORE_DAY=%LAST_MONTH_DAYS%-%N%+%CURRENT_DAY%)if %BEFORE_MONTH% LSS 10 (set BEFORE_MONTH=0%BEFORE_MONTH%)if %BEFORE_DAY% LSS 10 (set BEFORE_DAY=0%BEFORE_DAY%)set /a BN_DAYS_AGO=%BEFORE_YEAR%%BEFORE_MONTH%%BEFORE_DAY%::echo %BN_DAYS_AGO%:END exit 0::**************************获得25天以前的日期*******************************set today=%date:~0,10%set before7=%BN_DAYS_AGO% echo ******************************************************************** >> expsjsb.logecho %today% %time:~0,8%: Starting. >> expsjsb.logset timedir=%date:~0,4%%date:~5,2%%date:~8,2%md D:\backup\%timedir%if %ERRORLEVEL%==0 (echo %today% %time:~0,8%: 创建目录D:\backup\%timedir%成功。>> expsjsb.log)&(goto NEXT) if %ERRORLEVEL%==1 (echo %today% %time:~0,8%: 创建目录D:\backup\%timedir%失败或目录已经存在。>> expsjsb.log)&(goto END):NEXTecho %today% %time:~0,8%: 开始导出数据文件. >> expsjsb.logexp system/oracle  file=D:\backup\%timedir%\evsjsb%timedir%.dmp log=D:\backup\%timedir%\evsjsb%timedir%.log rows=nif %ERRORLEVEL%==0 (echo %today% %time:~0,8%: 数据导出成功。>> expsjsb.log)&(goto SUC)if %ERRORLEVEL%==1 (echo %today% %time:~0,8%: 数据导出失败。>> expsjsb.log)&(goto END):SUCecho %today% %time:~0,8%: 删除90天前的备份。>> expsjsb.logif exist D:\backup\%before7% GOTO EXISTif not exist D:\backup\%before7% GOTO NOEXIST:EXISTecho %today% %time:~0,8%: Delete the directory D:\backup\%before7%. >> expsjsb.logrd /s /q D:\backup\%before7% GOTO END:NOEXISTecho %today% %time:~0,8%: The directory D:\backup\%before7% is not exist. >> expsjsb.logGOTO END:ENDecho %today% %time:~0,8%: Quit. >> expsjsb.logecho ******************************************************************** >> expsjsb.log@echo on-----------结束--------------


步骤二:创建定时任务

开始 -> 所有程序 -> 附件 -> 系统工具 -> 任务计划程序 -> 操作 -> 创建基本任务    -> 任务名输入"oracle_backup"(自定义任务名),执行这个任务选择每天,下一步   -> 起始时间下午12:00,起始日期2012-7-11,下一步 ->(启动程序)下一步   ->在 浏览 中查找刚刚写好的 backup.bat 文件 >下一步 > 完成  




注:

    1.在任务计划栏目下新增一个名为"oracle_backup"的任务计划,表明已经配置完毕。

    2.不同系统的任务计划略有不同,但基本换汤不换药,不做一一例举

问题:系统警告"已创建新任务,但可能不能运行,因为无法设置账户信息。指定的错误是:Ox80041315:任务计划程序服务没有运行"
原因:电脑的任务计划程序服务没有启动起来。
解决:开始 > 所有程序 > 管理工具 > 服务,找到"Task Scheduler"服务,发现启动类型为"已禁用",
             右键单击更改为"自动",并把它启动起来,然后重新添加一次任务计划就可以了。


0 0
原创粉丝点击