Oracle数据库在linux和windows下自动备份脚本文档格式.docx
《Oracle数据库在linux和windows下自动备份脚本文档格式.docx》由会员分享,可在线阅读,更多相关《Oracle数据库在linux和windows下自动备份脚本文档格式.docx(10页珍藏版)》请在冰豆网上搜索。
2、自动删除7天前的备份,系统只保留当前7天的备份
1.系统用户一览
用户
所在组
权限
密码
root
超级用户
root123
oracle
oinstall
dba
orcl
2.Oracle环境变量
标题
内容
ORACLE目录
/home/oracle
ORACLE_BASE
/usr/local/oracle/
ORACLE_HOME
/usr/local/oracle/product/11.2.0
ORACLE_SID
3.邮件设置
[root@oraclemail]#cd/etc/mail
[root@oraclemail]#mvsubmit.cfsubmit.cfbak
[root@oraclespool]#chmoda+wrxmqueue/
[root@oraclemail]#echo"
sdsdssd"
|mail-s"
sda"
liunx@
4.创建备份目录
使用oracle创建备份文件存储目录
[root@oraclemail]#suoracle
[root@oraclemail]#df–hl
--查询/home下空闲磁盘空间,保证空间充足
[root@oraclemail]#su-oracle
[root@oracleoracle]$mkdir-p
/home/oracle/backup/data
[root@oracleoracle]$cd/home/oracle/backup
4.创建备份脚本
使用oracle用户创建自动备份脚本
[root@oracleoracle]$cd/home/oracle
[root@oracleoracle]$vibackup.sh
脚本内容如下,其中的红色部分需要根据实际情况调整
当前备份设置删除1个月之前的备份文件
#!
/bin/sh
######Oracleinfor#####
#设置字符集编码
exportLANG="
en_US.UTF-8"
#设置语言
exportNLS_LANG="
SimplifiedChinese_china"
.ZHS16GBK
#设置oracle的base目录
exportORACLE_BASE=/usr/local/oracle/
#设置oracle的家目录
exportORACLE_HOME=/usr/local/oracle/product/11.2.0
#设置oracle的sid
exportORACLE_SID=orcl
#把oracle的path加到path中去以便调用
exportPATH=$PATH:
$HOME/bin:
$ORACLE_HOME/bin
echo“检查磁盘空间”
#Checklocaldiskspace.................................
#注意这里写oracle备份文件目录
dest_posion=/home/oracle/backup
#邮件发送给谁,就是下面大于%85的时候的那句
RECIPT="
xxxxxx"
USED=`df-k|grep$bak_home|awk'
{print$5}'
|awk-F%'
{print$1}'
`
#如果磁盘使用情况大于%85的话
if[$USED-gt85];
then
#就报警并且发送邮件给当前用户
echo"
Diskspaceisfull\243\254pleasecheckit"
expfullbackupfailed"
$RECIPT
exit1
fi
#设置备份文件格式
#设置删除备份文件的格式,当前为删除1个月前的备份
#设置备份时间
backuptime=`date+"
%Y%m%d%H"
#设置删除时间(例如现在是2013-3-23那么这地方就是2013-2-23)
deletetime=`date-d"
1monthago"
+"
#这个地方给你自定义了一个变量记录你的oracle的备份目录
dest_posion="
xxxxxxxx"
echo开始删除一个月前的备份
#开始删除1个月前的备份
#删除你oracle的备份和日志文件(这个地方的日志的格式必须和下面的startingexpbackup一致)
rm-f$dest_posion/orcl_$deletetime.dmp
rm-f$dest_posion/orcl_$deletetime.log
echo删除完毕
echo开始备份
#startingexpbackup.....
expsystem/abc123full=ybuffer=65536
#下面的这两个文件就是刚刚说要和上面的删除备份的时候必须一致的文件
bakdata=$dest_posion/orcl_$deletetime.dmp
baklog=$dest_posion/orcl_$deletetime.log
echo开始压缩备份
#首先到备份目录中
cd$dest_posion
#然后备份并把两个文件压缩成为一个文件,文件名字就是备份的那一个月.tar.gz
tar-zcvf${backuptime}.tar.gz$bakdata$baklog#压缩备份文件和日志文件
#如果成功的话就删除原来的.dmp和.log的文件
if[$?
-eq0];
then
rm-rf$dest_posion/orcl_$deletetime.dmp&
&
rm-rfrm-f$dest_posion/orcl_$deletetime.log
else
文件删除失败......."
fi
echo"
开始远程上传"
;
##FTPserver######
FTP_HostName=192.168.0.211
FTP_UserName=ftpbackup
FTP_PassWord='
passwd'
FTP_BackupDir=DBBACKUP
##ftpserver######
#服务器端必须装有lftp
lftp$FTP_HostName-u$FTP_UserName,$FTP_PassWord<
<
EOF
#这里是FTP服务器的存放oracl数据库备份文件目录
#进入之后删除上个月的...当然你也可以定义删除上上个月的等等都是date-d设置的
mrm${deletetime}.tar.gz
mput${backuptime}.tar.gz
bye
EOF
#如果上面FTP传输完成的话就发送邮件给指定的外网你的邮箱
##Sendemailtoadministrator######
echo`ls`|mail-s"
数据库备份完毕$(date+"
%Y%m%d"
),请知会"
yourmail@---fbackup_report@
FTP传输失败....."
注意:
date-d"
命令代表获取当前1个月之前的时间
date-d"
1weekago"
命令代表获取当前1周之前的时间
1dayago"
命令代表获取当前1天之前的时间
提升权限
chmod+xbackup.sh#需要先设置为可执行脚本,只需要设置一次
手动测试一下
./backup.sh
5.设置脚本定时执行
要检查cron服务是否开启
/sbin/servicecrondstart//启动服务
/sbin/servicecrondstop//关闭服务
/sbin/servicecrondrestart//重启服务
使用root执行
vi/etc/crontab
#在最后一行添加
1017***oracle/home/oracle/backup.sh
#每天的17:
10执行/home/oracle/backup.sh
命令用法
●*****:
代表执行时间间隔
分别表示:
分钟:
0-59
小时:
1-23
日期:
1-31
月份:
1-12
星期:
0-6(0表示周日)
还可以用一些特殊符号:
*:
表示任何时刻
:
表示分割
-:
表示一个段,如第二端里:
1-5,就表示1到5点
/n:
表示每个n的单位执行一次,如第二段里,*/1,
就表示每隔1个小时执行一次命令。
也可以写成1-23/1.
示例:
4321***21:
43执行
1505*** 05:
15执行
017***17:
00执行
017**1每周一的17:
0,1017**0,2,3每周日,周二,周三的17:
00和17:
10执行
0-10171**毎月1日从17:
00到7:
10毎隔1分钟执行
001,15*1毎月1日和15日和一日的0:
4241** 毎月1日的4:
42分执行
021**1-6 周一到周六21:
0,10,20,30,40,50**** 每隔10分执行
*/10**** 每隔10分执行
*1*** 从1:
0到1:
59每隔1分钟执行
01*** 1:
0*/1*** 毎时0分每隔1小时执行
0**** 毎时0分每隔1小时执行
28-20/3*** 8:
02,11:
02,14:
02,17:
02,20:
02执行
3051,15** 1日和15日的5:
30执行
在实际使用过程中需要根据数据库膨胀的速度考虑备份定时的时间,一般膨胀越快,备份越频繁,如每天一次晚上23:
00备份;
数据库文件较大时,可适当降低备份频率,如2天或3天备份一次,同时增加删除频率,如只保留最近10天的数据。
需要注意备份路径所在的磁盘空间大小,一般使用df–hl查询,如果空间太小需要及时手动清理或增大空间。
●oracle:
执行脚本的用户
●/home/oracle/backup.sh:
执行脚本的路径
Linux系统下Oracle数据库的备份:
FIELNAME=/home/oracle/dmp/`date
+%Y%m%d`.dmp
echo
$FIELNAME
>
/home/oracle/dmp/filename
/home/oracle/product/9.2/bin/exp
ccbip/'
und\=2008CN(Y|N)
full=y
file=$FIELNAME
bzip2
注:
创建的文件都是Oracle用户oinstall组的。
/bin/bash
######Oracle
infor#####
export
ORACLE_HOME=/oracle/ruankodb/product/db/10g
ORACLE_SID=test
PATH=$ORACLE_HOME/bin:
$PATH
######Backup
oracle
user
and
password#####
ORSQL_UserName1=user1
ORSQL_PassWord1=passwd1
ORSQL_UserName2=user2
ORSQL_PassWord2=passwd2
ORSQL_UserName3=user3
ORSQL_PassWord3=passwd3
######Database
name######
Backup_Database_Name1=user1db
Backup_Database_Name2=user2db
Backup_Database_Name3=user3db
########
TodayDBBackup=db-*-$(date
+"
).dmp
OldDBBackup=db-*-$(date
-d
-3day
##backuping######
$ORSQL_UserName1/$ORSQL_PassWord1
file=/dbbackup/db-$Backup_Database_Name1-$(date
).dmp;
$ORSQL_UserName2/$ORSQL_PassWord2
file=/dbbackup/db-$Backup_Database_Name2-$(date
$ORSQL_UserName3/$ORSQL_PassWord3
file=/dbbackup/db-$Backup_Database_Name3-$(date
rm
-f
/dbbackup/$OldDBBackup
cd
/dbbackup/
lftp
$FTP_HostName
-u
$FTP_UserName,$FTP_PassWord
$FTP_BackupDir
mrm
$OldDBBackup
mput
$TodayDBBackup
##Send
email
to
administrator######
`ls`|
mail
-s
"
数据库备份完毕$(date
yourmail@
--
backup_report@
##################################