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
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这几个变量。