oracle 自动备份+保留7天数据+异地备份脚本
(2015-02-05 11:03:31)
标签:
数据库 |
分类: 数据库 |
一、脚本内容
@echo off
color 0b
mode con cols=80 lines=25
echo 正在备份数据库,请稍后……
echo ---------------可修改设置部分-----------------------
echo 指定数据库用户
set USER=CLGL
echo 指定数据库密码
set PASSWORD=clgl
echo 指定数据库服务名
set DBSERVER=192.168.6.201/orcl
echo 指定备份目录(指定备份的文件夹,以“\”结束)
set DIRECTORY=E:\BackUp\
IF NOT EXIST %DIRECTORY% (
mkdir %DIRECTORY%
)
echo ---------------可修改设置部分-----------------------
set DATAPART=�TE:~0,4%�TE:~5,2%�TE:~8,2%
set HOUR=%time:~0,2%
echo 如果小时是一位的,那么在前面补零
if /i %HOUR% LSS 10 (set HOUR=0%time:~1,1%)
set TIMEPART=%HOUR%%TIME:~3,2%%TIME:~6,2%
set FILENAME=%USER%-�TAPART%-%TIMEPART%
echo 请核对以下数据是否正确
echo 用户名:%USER%
echo 密码:%PASSWORD%
echo 服务名:�SERVER%
echo 备份目录:%DIRECTORY%
echo 备份文件名:%FILENAME%
Echo 开始备份数据库
echo ---------------------------------------------->> %DIRECTORY�ckUpLog.txt
Echo 备份数据库--开始时间: �te% %Time%>> %DIRECTORY�ckUpLog.txt
echo ---------------------------------------------
exp %USER%/%PASSWORD%@�SERVER% file=%DIRECTORY%%FILENAME%.dmp log=%DIRECTORY%%FILENAME%.log owner=%USER%
echo 数据库备份完成
echo 备份数据库--完成时间: �te% %Time% >> %DIRECTORY�ckUpLog.txt
echo .....>> %DIRECTORY�ckUpLog.txt
echo 开始删除7天之前的备份数据
echo 删除7天之前的备份数据开始时间 �te% %Time% >> %DIRECTORY�ckUpLog.txt
echo ---------------------------------------------
forfiles /p %DIRECTORY�TA /s /m *.* /d -7 /c "cmd /c del @path"
forfiles /p %DIRECTORY%LOG /s /m *.* /d -7 /c "cmd /c del @path"
echo 删除7天之前的备份数据完成
echo 删除7天之前的备份数据完成时间 �te% %Time% >> %DIRECTORY�ckUpLog.txt
echo ---------------可修改设置部分-----------------------
echo 指定备份服务器IP,格式\\***.***.***.***\
set BACK_SERVER_IP=\\192.168.6.202\
echo 指定备份服务器盘符,如C
set BACK_SERVER_DISK=C
echo 指定备份服务器及盘符的别名,如P:
set BACK_SERVER_DISK_ALIAS=P:
echo 指定备份服务器登陆用户名
set BACK_SERVER_USER=PGISSERVER1\Administrator
echo 指定备份服务器登陆密码
set BACK_SERVER_PASSWORD=Mm222222~
echo 指定服务器的备份目录,格式 \.....
set BACK_SERVER_DIRECTORY=\BackUp
echo ---------------可修改设置部分-----------------------
echo 请核对以下数据是否正确
echo 备份服务器用户名:�CK_SERVER_USER%
echo 备份服务器密码:�CK_SERVER_PASSWORD%
echo 备份服务器目录:�CK_SERVER_IP%�CK_SERVER_DISK%�CK_SERVER_DIRECTORY%
echo 开始向异地服务器�CK_SERVER_IP%备份数据
echo -- >> %DIRECTORY�ckUpLog.txt
echo 开始向异地服务器�CK_SERVER_IP%备份数据 �te% %Time% >> %DIRECTORY�ckUpLog.txt
echo ---------------------------------------------
net use * /delete /yes
net use �CK_SERVER_DISK_ALIAS% �CK_SERVER_IP%�CK_SERVER_DISK%$ /user:�CK_SERVER_USER% �CK_SERVER_PASSWORD%
xcopy %DIRECTORY%%FILENAME%.dmp �CK_SERVER_DISK_ALIAS%�CK_SERVER_DIRECTORY%\ /e /d /y /c /i >> %DIRECTORY�ckUpLog.txt
xcopy %DIRECTORY%%FILENAME%.log �CK_SERVER_DISK_ALIAS%�CK_SERVER_DIRECTORY%\ /e /d /y /c /i >> %DIRECTORY�ckUpLog.txt
net use * /delete /yes
echo 向异地服务器�CK_SERVER_IP%备份数据完成
echo 向异地服务器�CK_SERVER_IP%备份数据完成 �te% %Time% >> %DIRECTORY�ckUpLog.txt
二、附录
FORFILES
/P
/M
默认命令是
@file
@path
@relpath
@fsize
@fdate
@ftime
要在命令行包括特殊字符,字符请以
例如:
FORFILES
定时实现
假设A机器是windos2008操作系统,在"开始"-->"管理工具"-->"任务计划程序",运行windows计划任务。通过创建任务,指向批处理文件,设定触发时间,让A机器每天执行复制工作,保证了A机器的目录文件发生变化,就会定时复制到B机器。保存计划任务后,A机器就会按照我们设定好的时间定时地执行批处理了。这就相当于从A机器到B机器的数据备份工作自动完成,已经存在的文件不会被复制过去,不存在的,会复制过去。设定好的计划任务窗口如下: