oracle用expdp方式备份脚本
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle用expdp方式备份脚本相关的知识,希望对你有一定的参考价值。
需求:备份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
以上是关于oracle用expdp方式备份脚本的主要内容,如果未能解决你的问题,请参考以下文章
利用SHELL脚本实现将Oracle数据库的每日EXPDP导出文件复制到远程服务器
利用SHELL脚本实现将Oracle数据库的每日EXPDP导出文件复制到远程服务器
liunx centos 下oracle expdp备份导出 sh脚本
用EXPDP如何设置自动备份了,请大家帮忙! 是用ORACLE R12. 第一次发贴,不是很会写,在线等... 那位大侠帮忙