Oracle用expdp方式备份脚本;
admin
2023-03-28 13:41:31
0

需求:备份oracle数据库并将数据备份的文件上传到ftp所在服务器
ftp服务器IP地址:192.168.6.9
ftp服务器账户/密码:test/test2019

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

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

2、创建备份脚本:

$ vi /u01/app/backup/bin/bak.sh
#!/bin/sh
#自己指定环境变量(适合多实例的数据库)
export ORACLE_SID=orcl
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1
export PATH=$ORACLE_HOME/bin:$PATH:/sbin/
expot.UTF-8
export NLS_LANG='AMERICAN_AMERICA.AL32UTF8'

#或使用oracle原先.bash_profile文件里环境变量
source /home/oracle/.bash_profile

#上面环境变量二选一即可
timedate=$(date +%Y%m%d%H%M%S)
bakdbname=hb
bakdbpasswd=h2234
dumpbame=hd
bakdbhome=/u01/app/backup
expdp $bakdbname/$bakdbpasswd directory=backDir dumpfile=$dumpbame-$timedate.dmp logfile=$bakdbname-$timedate.log
#方法一、压缩dmp文件,会连接bakdbhome变量的目录及文件一并压缩
zip -r $bakdbhome/$dumpbame-$timedate.zip $bakdbhome/$dumpbame-$timedate.dmp $bakdbhome/$bakdbname-$timedate.log      #压缩dmp文件及日志文件
#或用方法二
#若是不加项目路径目录名就切换到存放dmp文件的目录进行压缩即可
cd $bakdbhome
zip -r $dumpbame-$timedate.zip $dumpbame-$timedate.dmp $bakdbname-$timedate.log

find $bakdbhome/*.log -mtime +10 -exec rm -rf {} \;
find $bakdbhome/*.zip -mtime +10 -exec rm -rf {} \;
find $bakdbhome/*.dmp -exec rm -rf {} \;  #前面压缩后,删除原dmp文件

cd $bakdbhome   #切换到备份文件目录下(这里如果用的方法二的就不在需要在切换目录的了)
ftp -v -n 192.168.6.9  << EOF       #执行ftp命令

ftp -v -n 192.168.6.9 >>${bakdbname}_${timedate}.log << 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

3、实例脚本,备份好库并异地上传

#!/bin/sh
source /home/oracle/.bash_profile
timedate=$(date +%Y%m%d%H%M%S)
bakdbname=re
bakdbpasswd=123
dumpdbname=re
bakdbhome=/u01/databack
expdp $bakdbname/$bakdbpasswd directory=backDir dumpfile=$dumpdbname'_'$timedate.dmp logfile=$dumpdbname'_'$timedate.log
cd /u01
zip -r databack/$dumpdbname'_'$timedate.zip databack/$dumpdbname'_'$timedate.dmp databack/$dumpdbname'_'$timedate.log
find $bakdbhome/*.log -mtime +10 -exec rm -rf {} \;
find $bakdbhome/*.zip -mtime +10 -exec rm -rf {} \;
find $bakdbhome/*.dmp -exec rm -rf {} \;

cd $bakdbhome
ftp -v -n 192.168.6.9 >>${dumpdbname}_${timedate}.log << EOF
user test test2018
binary
hash
put ${dumpdbname}_${timedate}.zip ${dumpdbname}_${timedate}.zip
bye
EOF

#iconv -f gb2312  -t utf8 ${bakdbname}_${timedate}.log  -o ${bakdbname}_${timedate}.log

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



示例:


#/bin/bash

echo "=======expdp-oracle-backup========"

source /home/oracle/.bash_profile

timedate=$(date +%Y%m%d%H%M%S)

bakdbname=system

bakdbpasswd=oracle

dumpbame=oracle_bak

bakdbhome=/opt/backup

expdp $bakdbname/$bakdbpasswd@10.32.10.30/orcl directory=ORACLE_BACKUP dumpfile=$dumpbame-$timedate.dmp logfile=$bakdbname-$timedate.log full=y
#压缩dmp文件,会连接bakdbhome变量的目录及文件一并压缩;

zip -r $bakdbhome/$dumpbame-$timedate.zip $bakdbhome/$dumpbame-$timedate.dmp $bakdbhome/$bakdbname-$timedate.log      #压缩dmp文件及日志文件;

cd $bakdbhome

zip -r $dumpbame-$timedate.zip $dumpbame-$timedate.dmp $bakdbname-$timedate.log

find $bakdbhome/*.log -mtime +10 -exec rm -rf {} \;

find $bakdbhome/*.zip -mtime +10 -exec rm -rf {} \;

find $bakdbhome/*.dmp -exec rm -rf {} \;              #前面压缩后,删除原dmp文件

相关内容

热门资讯

【第一消息】“福建麻将开挂神器... 有 亲,根据资深记者爆料福建麻将是可以开挂的,确实有挂(咨询软件无需打开...
重磅消息“乐乐安徽麻将开挂器?... 网上科普关于“乐乐安徽麻将有没有挂”话题很是火热,小编也是针对乐乐安徽麻将作*弊开挂的方法以及开挂对...
玩家攻略科普“九酷众娱炸/金/... 玩家攻略科普“九酷众娱炸/金/花可以开挂吗?”(外卦神器下载)您好,九酷众娱炸/金/花这个游戏其实有...
今日重大发现“乐暴延边麻将是不... 网上科普关于“乐暴延边麻将有没有挂”话题很是火热,小编也是针对乐暴延边麻将作*弊开挂的方法以及开挂对...
重磅消息“悠悠众娱有挂吗?”(... 家人们!今天小编来为大家解答悠悠众娱透视挂怎么安装这个问题咨询软件客服徽4282891的挂在哪里买很...
今日重大通报“欢乐联赛可以开挂... 网上科普关于“欢乐联赛有没有挂”话题很是火热,小编也是针对欢乐联赛作*弊开挂的方法以及开挂对应的知识...
我来教教您“皇豪互娱是不是有挂... 您好:皇豪互娱这款游戏可以开挂,确实是有挂的,需要了解加客服微信【9784099】很多玩家在这款游戏...
最新引进“墨韵麻趣怎么开挂?”... 家人们!今天小编来为大家解答墨韵麻趣透视挂怎么安装这个问题咨询软件客服徽4282891的挂在哪里买很...
【今日要闻】“新三哥玩到底是不... 【今日要闻】“新三哥玩到底是不是挂?”(其实是有挂)您好,新三哥玩这个游戏其实有挂的,确实是有挂的,...
最新引进“中至南昌麻将到底是不... 有 亲,根据资深记者爆料中至南昌麻将是可以开挂的,确实有挂(咨询软件无需...