oracle用expdp方式备份脚本

匿名 (未验证) 提交于 2019-12-03 00:39:02
需求:备份oracle数据库并将数据备份的文件上传到ftp所在服务器
ftp服务器IP地址:192.168.6.9
ftp服务器账户/密码:test/test2018

1、oracle用户创建备份脚本路径:

#su - oracle $ mkdir /u0/app/backup/bin $ cd /u01/app/backup/bin

2、创建备份脚本:

$ vi /u01/app/backup/bin/bak.sh #!/bin/sh source /home/oracle/.bash_profile timedate=$(date +%Y%m%d%H%M%S) bakdbname=hb bakdbpasswd=h1234 dumpbame=hd bakdbhome=/u01/app/backup expdp $bakdbname/$bakdbpasswd directory=backDir dumpfile=$dumpbame-$timedate.dmp logfile=$bakdbname-$timedate.log zip -r $bakdbhome/$dumpbame-$timedate.zip $bakdbhome/$dumpbame-$timedate.dmp $bakdbhome/$bakdbname-$timedate.log      #压缩dmp文件及日志文件 find $bakdbhome/*.log -mtime +10 -exec rm -rf {} \; find $bakdbhome/*.zip -mtime +10 -exec rm -rf {} \;   cd $bakdbhome   #切换到备份文件目录下 ftp -v -n 192.168.6.9  << EOF       #执行ftp命令 user test test2018           #用户名和密码 binary                     #切换传输模式为二进制模式,以字节传输(除文字文件外皆用此模式) hash                       #切换#字号的出现,每一个#字号表示传送了1024/8192BYTES put $dumpbame-$timedate.zip $dumpbame-$timedate.zip bye EOF  #将日志文件的GB2312转为UTF-8编码,这样脚本执行的log日志文件中文不会乱码 iconv -f gb2312  -t utf8 $bakdbname-$timedate.log  -o $bakdbname-$timedate.log find $bakdbhome/*.dmp -exec rm -rf {} \;  #前面压缩后,删除原dmp文件
FTP的命令行格式为:  ftp -v -d -i -n -g [主机名] ,其中  -v 显示远程服务器的所有响应信息;  -n 限制ftp的自动登录,即不使用; hash:每传输1024字节,显示一个hash符号(#); .n etrc文件;  -d 使用调试方式;  -g 取消全局文件名; bye:退出ftp会话过程; get下传文件; mget批量下传文件,需配合万用字元,例如:MGET*.GZ; put上传文件; mput批量上传文件,需配合万用字元; recv相当于GET(RECV为RECEIVE的简写): send相当于PUT。

给bak.sh脚本执行权限,做计划任务即可

$ crontab -l 10 0 * * * /bin/bash /u01/app/backup/bin/bak.sh

原文:http://blog.51cto.com/meiling/2135977

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!