加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

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 pathname] [/M searchmask] [/S] 

         [/C command] [/D [+ -] {yyyy-MM-dd dd}] 描述

    选择一个文件(或一组文件)并在那个文件上     执行一个命令。这有助于批处理作业。 

   BAIDU_CLB_fillSlot( '920314' ); 

 参数列表

/P    pathname      表示开始搜索的路径。默认文件夹是当前工作的目录 (.) 

/M    searchmask    根据搜索掩码搜索文件。默认搜索掩码是 '*'    

 /S 指导 forfiles 递归到子目录。像 "DIR /S"    

 /C    command表示为每个文件执行的命令。命令字符串应该用双引号括起来。 

默认命令是 "cmd /c echo @file"。下列变量可以用在命令字符串中                        

@file    返回文件名。 

 @fname   返回不带扩展名的文件名。                        

 @ext     只返回文件的扩展。                         

@path    返回文件的完整路径。                         

@relpath 返回文件的相对路径。 

 @isdir   如果文件类型是目录,返回 "TRUE";如果是文件,返回 "FALSE"                         

@fsize   以字节为单位返回文件大小。                         

@fdate   返回文件上一次修改的日期。                         

@ftime   返回文件上一次修改的时间。                         

要在命令行包括特殊字符,字符请以 0xHH 形式使用十六进制代码(例如,0x09  tab)。内部 CMD.exe 命令前面应以 "cmd /c" 开始。    

 /D    date 选择文件,其上一次修改日期大于或等于 (+) 或者小于或等于 (-)  "yyyy-MM-dd" 格式指定的日期或选择文件,其上一次修改日期大于或等于 (+)当前日期加 "dd" 天,或者小于或等于 (-) 当前日期减 "dd" 天。有效的 "dd" 天数可以是 32768 范围内的任何数字。如果没有指定, "+" 被当作默认符号。    

 /? 显示帮助消息。 

例如

    FORFILES /?     FORFILES  

    FORFILES /P C:\WINDOWS /S /M DNS*.*  

    FORFILES /S /M *.txt /C "cmd /c type @file more"     FORFILES /P C:\ /S /M *.bat 

 

 

 BAIDU_CLB_fillSlot( '920966' );

 

 

 

    FORFILES /D -30 /M *.exe 

             /C "cmd /c echo @path 0x09  30 前就被更改。    FORFILES /D 2001-01-01 

             /C "cmd /c echo @fname  200111日就是新的。    FORFILES /D +2009-10-11 /C "cmd /c echo @fname 今天是新的。    FORFILES /M *.exe /D +1 

    FORFILES /S /M *.doc /C "cmd /c echo @fsize"  

FORFILES /M *.txt /C "cmd /c if @isdir==FALSE notepad.exe @file" 删除7天前的文件:forfiles /p "D:\ora_bak\log" /s /m *.* /d -7 /c "cmd /c del @path"

定时实现

假设A机器是windos2008操作系统,在"开始"-->"管理工具"-->"任务计划程序",运行windows计划任务。通过创建任务,指向批处理文件,设定触发时间,让A机器每天执行复制工作,保证了A机器的目录文件发生变化,就会定时复制到B机器。保存计划任务后,A机器就会按照我们设定好的时间定时地执行批处理了。这就相当于从A机器到B机器的数据备份工作自动完成,已经存在的文件不会被复制过去,不存在的,会复制过去。设定好的计划任务窗口如下:

 

 有一个重要的地方,就是批处理访问了B机器的目录,要保证在这个机器上A可以访问这个目录并有写的权限,才可以复制数据过去。

 

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有