千家信息网

Oracle用expdp方式备份脚本;

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,需求:备份oracle数据库并将数据备份的文件上传到ftp所在服务器ftp服务器IP地址:192.168.6.9ftp服务器账户/密码:test/test20191、oracle用户创建备份脚本路径:
千家信息网最后更新 2026年11月02日Oracle用expdp方式备份脚本;

需求:备份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文件

文件 备份 日志 目录 脚本 变量 切换 服务器 服务 数据 方法 模式 环境 传输 信息 命令 字号 字节 实例 密码 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 中国互联网科技工作委员会毛军 互联网科技巨头监管 互联网金融 科技 互联网与新科技 广州互联网络科技有限公司 壕鑫互联网络科技 易通互联网络科技有限公司 亿账通互联网科技 海南购全球互联网科技 互联网实体化科技化 智腾互联网科技有限公司 中国互联网十大科技股排名 天津腾达互联网科技有限公司 伊宁互联网科技做什么的 众安科技工业互联网合作 郑州欣桑互联网科技有限公司 福州德业互联网科技 银川新华互联网科技学校是国营吗 互联网科技创新方面的资料 银川新华互联网科技学校招聘 美国互联网保险保险科技 互联网科技革命 互联网科技产品 广州慧亚互联网科技怎么样 福州新华互联网科技学校 知乎 河南猎农互联网科技有限公司 互联网金融科技元年 宇信科技在杭州互联网排第几 全球科技与互联网公司市值变化 陕西九四连强互联网科技有限公司
0