技术开发 频道

使用批处理完成数据库备份和上传

  expdp版本

  适合于Oracle 10g以上的版本,下面是具体的内容。 

rem 设置自定义变量,实际使用中根据需要修改这些变量!

  rem 设置日期变量,获取日期前10位,即2008
-11-19。有的机器上运行date命令返回的日期,星期可能在前,那这里要改为%date:~4,10%

  
set riqi=%date:~0,10%

  rem 设置时间变量,由于Windows time命令返回的时间中有冒号,文件名不支持,做一下字符串截取和连接,这里定义的t1变量很特殊,如果不用0
-,当时间小于10时,如09点,返回时前面的0被空格代替了,后面在exp命令中调用这个变量时,遇到空格,后面的变量就不起作用了。t2也如此。最后将t1和t2连接在一起形成时间变量。

  
set /a t1=0-%time:~0,2%

  
set /a t2=0-%time:~3,2%

  
set shijian=%t1%%t2%

  rem 这里将日期和时间合并成一个datetime变量。

  
set datetime=%riqi%%shijian%

  rem 设置datapump路径,使用绝对路径,路径末尾最后不要加“\”,默认是
%ORACLE_BASE%\app\oracle\admin\%ORACLE_SID%\dpdump,可以以sys登陆到数据库,使用sql语句select * from dba_directories where directory_name='DATA_PUMP_DIR';查询出数据导出路径。

  
set bakurl=C:\oracle\product\10.2.0\admin\orcl\dpdump

  rem 设置多个导出文件,f1为第一个,f2为第二个,依次类推,如果6个不够用还可以自行增加。

  
set f1=01

  
set f2=02

  
set f3=03

  
set f4=04

  
set f5=05

  
set f6=06

  rem 设置ftp服务器ip地址。

  
set ftp_addr=192.168.1.205

  rem 设置ftp服务器端口

  
set ftp_port=22

  rem 设置登陆ftp服务器的用户名。

  
set ftpuser=anonymous

  rem 设置ftp用户的登陆密码。

  
set ftpuser_passwd=abc

  rem 设置上传文件时的目标目录,指ftp根目录下的某个目录。

  
set target_dir=databasebak

  rem 设置导出时Oracle用户名。

  
set expuser=lis

  rem 设置导出时Oracle用户的密码。

  
set expuser_passwd=lis

  rem 设置导出时Oracle连接服务名。

  
set ora_conn=orcl

  rem 设置导出文件单个大小,如果是FAT32文件系统则最大只支持2G,如果是NTFS就不受限制。

  
set fsize=1

  rem 开始导出数据,并同步记录导出日志,这里有个小缺陷,不管1个文件是否够用,总会产生6个文件!

  expdp
%expuser%/%expuser_passwd%@%ora_conn% filesize=%fsize%G schemas=%expuser% logfile=%expuser%%datetime%数据库备份日志.log dumpfile=%expuser%%datetime%_%f1%.dmp,%expuser%%datetime%_%f2%.dmp,%expuser%%datetime%_%f3%.dmp,%expuser%%datetime%_%f4%.dmp,%expuser%%datetime%_%f5%.dmp,%expuser%%datetime%_%f6%.dmp

  rem 开始构造临时ftp连接脚本文件!

  echo
open %ftp_addr% %ftp_port% > ftp.tmp

  echo
user %ftpuser% %ftpuser_passwd% >>ftp.tmp

  echo cd
%target_dir% >>ftp.tmp

  echo type
binary >>ftp.tmp

  echo put
%bakurl%\%expuser%%datetime%_%f1%.dmp >> ftp.tmp

  echo put
%bakurl%\%expuser%%datetime%_%f2%.dmp >> ftp.tmp

  echo put
%bakurl%\%expuser%%datetime%_%f3%.dmp >> ftp.tmp

  echo put
%bakurl%\%expuser%%datetime%_%f4%.dmp >> ftp.tmp

  echo put
%bakurl%\%expuser%%datetime%_%f5%.dmp >> ftp.tmp

  echo put
%bakurl%\%expuser%%datetime%_%f6%.dmp >> ftp.tmp

  echo put
%bakurl%\%expuser%%datetime%数据库备份日志.log >> ftp.tmp

  echo bye
>> ftp.tmp

  rem 开始使用ftp客户端连接,并执行脚本文件,上传备份文件和备份日志文件!

  ftp
-n -s:ftp.tmp

  rem 删除临时构造的ftp连接脚本文件、当天本地备份文件和备份日志文件!

  del
/f ftp.tmp

  del
/f %bakurl%\%expuser%%dattime%*.dmp

  del
/f %bakurl%\%expuser%%datetime%数据库备份日志.log

  运行环境说明

  由于批处理文件中已经假设很多先决条件都具备了,如本地备份目录是否已经创建好,ftp服务器是否已经配置完毕。下面列出具体的运行要求:

  1、 只能在Windows环境下运行,已经在2000/xp/2003下测试通过。

  2、 安装并配置好一个ftp服务器,位于最后备份文件要存放的服务器上,并在ftp根目录下创建好对应的文件存放目录。

  3、 计划任务要能够正常工作。

  4、 如果在你的环境中运行,需要修改bakurl,ftp_addr,ftp_port,ftpuser,ftpuser_passwd,target_dir,expuser,expuser_passwd,ora_conn,fsize这几个变量。

0
相关文章