您的位置:首页 > 数据库 > Oracle

oracle 定期备份 + 压缩 批处理.bat文件

2012-03-27 10:25 225 查看
@echo off

rem ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓

rem ┣----------------------提示:-----------------------------------┫

rem ┣--该批处理为数据库备份操作文件.-------------------------------┫

rem ┣--由于sqlserver自带备份策略,无需使用批处理.-------------------┫

rem ┣--所以对应数据库类型仅包涵oracle,mysql两种.-------------------┫

rem ┣--存放目录格式如d:\backup\crmnew------------------------------┫

rem ┣--盘符下一级为总目录的文件夹名例如backup----------------------┫

rem ┣--二级为使用该数据库的项目名称例如crmnew----------------------┫

rem ┣--执行环境为windows server 2003-------------------------------┫

rem ┣--编写者:CWCA-ly-2011-7-25------------------------------------┫

rem ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛

rem ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓

rem ----------------------初始设置项----------------------------

rem 设置项目库备份文件总目录-无需手动创建

set bak_dir=D:\DATA_BACK

rem 选择备份数据所使用的压缩软件

set compressFile="C:\Program Files\WinRAR\Rar.exe"

rem 设置数据库的类型,目前包含oracle和mysql

set db_type=oracle

rem 设置登陆目的数据库的标识,oracle为sid,mysql为库名

set db_name=orcl

rem 设置登陆目的数据库的用户名

set db_user=xxxx

rem 设置登陆目的数据库的用户密码

set db_pwd=xxxx

rem 设置备份周期,1为按天备份,7为按周备份,其它数字无效,与任务计划里的运行周期可并存。

set bak_cycle=1

rem 设置每个备份文件的保留天数,为0则表示不删除历史文件

set keep_days=30

rem ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛

rem ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓

rem ----------------------可选设置项----------------------------

rem 获取当天为星期几

set pweek=%date:~-1%

rem 设置单个备份文件名-此处按日期命名-例:20110101 -建议不要更改

set bakfilename=%Date:~0,4%%Date:~5,2%%Date:~8,2%

rem ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛

rem ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓

rem ----------------------------------------执行代码区域------------------------------------

if not exist %bak_dir% mkdir %bak_dir%

set filesuffix=

if %db_type% equ oracle set filesuffix=dmp

if %db_type% equ mysql set filesuffix=sql

if %bak_cycle% equ 7 (

if %pweek% equ 日 goto backup

goto end

)

if %bak_cycle% equ 1 goto backup

goto end

:backup

if %db_type% equ oracle goto backup_oracle

if %db_type% equ mysql goto backup_mysql

goto end

:backup_oracle

exp %db_user%/%db_pwd%@%db_name% file=%bak_dir%%bakfilename%.%filesuffix%

goto compress

:backup_mysql

mysqldump -u%db_user% -p%db_pwd% %db_name% > %bak_dir%%bakfilename%.%filesuffix%

goto compress

:compress

%compressFile% a %bak_dir%%bakfilename%.rar %bak_dir%%bakfilename%.*

goto delete_source

:delete_source

del %bak_dir%%bakfilename%.%filesuffix%

goto delete_history

:delete_history

if %keep_days% neq 0 forfiles /p %bak_dir% /d -%keep_days% /c "cmd /c echo deleting @file ... && del /f @path"

goto end

:end

set bak_dir=

set compressFile=

set db_type=

set db_name=

set db_user=

set db_pwd=

set bak_cycle=

set keep_days=

set pweek=

set bakfilename=

set filesuffix=

rem ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛

注:将以上代码拷贝到.txt文件中,另存为.bat,新建windows任务定时执行该文件即可!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: