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

步骤一:创建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%%%4
set /a CONDITION2=%CURRENT_YEAR%%%400
set /a CONDITION3=%CURRENT_YEAR%%%100
if %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=0
if %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
::*********************变量定义完成**********************************
::如果今天天数大于N
if %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.log
echo %today% %time:~0,8%: Starting. >> expsjsb.log
set 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)
:NEXT
echo %today% %time:~0,8%: 开始导出数据文件. >> expsjsb.log
exp system/oracle  file=D:\backup\%timedir%\evsjsb%timedir%.dmp log=D:\backup\%timedir%\evsjsb%timedir%.log rows=n
if %ERRORLEVEL%==0 (echo %today% %time:~0,8%: 数据导出成功。>> expsjsb.log)&(goto SUC)
if %ERRORLEVEL%==1 (echo %today% %time:~0,8%: 数据导出失败。>> expsjsb.log)&(goto END)
:SUC
echo %today% %time:~0,8%: 删除90天前的备份。>> expsjsb.log
if exist D:\backup\%before7% GOTO EXIST
if not exist D:\backup\%before7% GOTO NOEXIST
:EXIST
echo %today% %time:~0,8%: Delete the directory D:\backup\%before7%. >> expsjsb.log
rd /s /q D:\backup\%before7% 
GOTO END
:NOEXIST
echo %today% %time:~0,8%: The directory D:\backup\%before7% is not exist. >> expsjsb.log
GOTO END
:END
echo %today% %time:~0,8%: Quit. >> expsjsb.log
echo ******************************************************************** >> expsjsb.log
@echo on
-----------结束--------------


步骤二:创建定时任务

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




注:

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

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

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


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值