使用bat批处理文件定时自动备份oracle数据库并上传ftp服务器

时间:2022-03-16 00:34:31

一、使用bat批处理文件备份oracle(前提是配置好oracle数据库客户端)

@echo off

set databasename=orcl  //数据库名

set username=ninic //用户名

set password=***//密码

set connect=%username%%password%@%databasename% //获取数据库的连接

set back_path=d:\oracledatabackup //存放备份文件的路径

if not exist %back_path% md %back_path%   //如果在此路径下不存在文件夹,则创建一个

set date_string=%date:~0,4%_%date:~5,2%_%date:~8,2% //表示日期年月日

set time_hour=%time:~0,2%  //小时

//如果小时少于两位数,在前面补0

if "%time_hour%"==" 0" set time_hour=00
if "%time_hour%"==" 1" set time_hour=01
if "%time_hour%"==" 2" set time_hour=02
if "%time_hour%"==" 3" set time_hour=03
if "%time_hour%"==" 4" set time_hour=04
if "%time_hour%"==" 5" set time_hour=05
if "%time_hour%"==" 6" set time_hour=06
if "%time_hour%"==" 7" set time_hour=07
if "%time_hour%"==" 8" set time_hour=08
if "%time_hour%"==" 9" set time_hour=09

set time_string=%time:~0,2%_%time:~3,2%_%time:~6,2%  //表示时间时分秒

set file_string=%back_path%\data_%date_string%_%time_string%  //以时间为文件命名

exp ‘%connect% as sysdba ’  file=%file_string%.dmp tables=(Node,NodeInfo,NodeData)

index=y  grants=y constraints=y compress=y 

//(1)‘%connect% as sysdba ’ 这里这样写是因为我是以sysdba的身份登录的,如果不这样写的话,回事默认以normal身份登录的,这样就没办法登录,如果你是normal身份就直接写%connect%

//(2)后面所有的参数就不一一解释了,根据自己的需要添加,如果想知道每个参数的意思,在dos命令下写 exp help=y  便可看到。

//(3)注:由于ORACLE默认的表名都是不区分大小写,在创建表时,在数据字典中存储的表名为大写。在有些情况下,如果创建的表在表名上加上双引号("),则创建的表其表名在数据字典中不作转换。这样的话上面的tables里面就不能那样写,而是:

//(4)tables='\"Node\"','\"NodeData\"','\"NodeInfo\"','\"Orgnize\"'

"c:\Program Files\7-Zip\7z.exe" a -tzip %file_string%.zip  %file_string%.dmp

//上面是我对备份的文件进行了压缩,你如果不压缩用可以不用写(我使用的是7-Zip来压缩文件,所以如果你要用到这一行,你就得下载一个7-Zip压缩软件)

del %file_string%.dmp //删除原来的dmp文件

二:在windows7下面设置定时自动执行任务

开始-》程序-》附件-》任务计划程序-》操作-》创建基本任务-》添加名称(oraclebackup)-》每天-》设置程序运行时间-》点击启动程序

(注:如果你想删除这一任务,点击“任务计划程序库”,在中间一栏找到你刚创建的任务,右击鼠标选择删除就行)

三、上传文件到FTP服务器

echo open IP地址>ftp.up
echo  用户名>>ftp.up
echo 密码>>ftp.up
echo bin>>ftp.up   //二进制
echo cd .\dbback>>ftp.up  //切换到ftp服务器上你要上传文件的文件夹下
echo put   上传的文件>>ftp.up 
echo bye>>ftp.up
ftp -s:ftp.up
del ftp.up /q
pause