oracle脚本使用dump,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

#自己指定环境变量(适合多实例的数据库)

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 LANG=zh_CN.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=h1234

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1、提供了oracle数据库备份脚本,导出dmp文件 2、定时任务由操作系统提供的支持,在操作系统中设置定时任务,由操作系统定期执行脚本 3、补充。压缩包脚本有点问题,不能删除旧的备份文件。需要自动删除历史备份文件请用最新脚本: @echo off @echo ================================================ @echo windows环境下Oracle数据库的自动备份脚本 @echo 说明:启动备份时,需要配置以下变量 @echo 1、BACKUP_DIR 指定要备份到哪个目录 @echo 2、ORACLE_USERNAME 指定备份所用的Oracle用户名 @echo 3、ORACLE_PASSWORD 指定备份所用的Oracle密码 @echo 4、ORACLE_DB 指定备份所用的Oracle连接名 @echo 5、BACK_OPTION 备份选项,可以为空,可以为full=y,可以为owner=a用户,b用户 等等.... @echo 6、RAR_CMD 指定RAR命令行压缩工具所在目录 @echo ================================================ rem 以下变量需要根据实际情况配置 set BACKUP_DIR=D:\tools\oracle_bak\backup230 set ORACLE_USERNAME=PLATADMIN set ORACLE_PASSWORD=123456 set ORACLE_DB=ORCL set BACK_OPTION=owner=PLATADMIN set RAR_CMD="D:/Program Files/WinRAR/Rar.exe" rem for /f "tokens=1,2" %%a in ('date/t') do set TODAY=%%a rem set BACK_NAME=%ORACLE_DB%_%TODAY%(%time:~0,2%时%time:~3,2%分)_ set BACK_NAME=%Date:~0,4%%Date:~5,2%%Date:~8,2%%Time:~0,2%%Time:~3,2%%Time:~6,2% set BACK_FULL_NAME=%BACKUP_DIR%/%BACK_NAME% rem 开始备份 exp %ORACLE_USERNAME%/%ORACLE_PASSWORD%@%ORACLE_DB% %BACK_OPTION% file="%BACK_FULL_NAME%.dmp" log="%BACK_FULL_NAME%exp.log" rem 压缩并删除原有文件 %RAR_CMD% a -df "%BACK_FULL_NAME%back.rar" "%BACK_FULL_NAME%.dmp" "%BACK_FULL_NAME%exp.log" rem 删除15天前的备份文件 forfiles /p %BACKUP_DIR% /s /m *.rar /d -15 /c "cmd /c del @file"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值