Oracle数据库在linux和windows下自动备份脚本.docx

上传人:b****6 文档编号:6813859 上传时间:2023-01-10 格式:DOCX 页数:10 大小:26.48KB
下载 相关 举报
Oracle数据库在linux和windows下自动备份脚本.docx_第1页
第1页 / 共10页
Oracle数据库在linux和windows下自动备份脚本.docx_第2页
第2页 / 共10页
Oracle数据库在linux和windows下自动备份脚本.docx_第3页
第3页 / 共10页
Oracle数据库在linux和windows下自动备份脚本.docx_第4页
第4页 / 共10页
Oracle数据库在linux和windows下自动备份脚本.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

Oracle数据库在linux和windows下自动备份脚本.docx

《Oracle数据库在linux和windows下自动备份脚本.docx》由会员分享,可在线阅读,更多相关《Oracle数据库在linux和windows下自动备份脚本.docx(10页珍藏版)》请在冰豆网上搜索。

Oracle数据库在linux和windows下自动备份脚本.docx

Oracle数据库在linux和windows下自动备份脚本

Oracle数据库在linux和windows下自动备份脚本总结

本文我们主要对Oracle数据库在Linux和Windows下自动备份的脚本进行了总结,以便于我们对于Oracle数据库在不同平台上的备份的掌握。

一.Windows平台下

Windows系统下Oracle数据库自动备份脚本:

expData.bat的内容:

exp system/system@orcl file=c:

\oracle_bak\tne%date:

~4,10%.dmp owner=tne  

exp system/system@orcl file=c:

\oracle_bak\prt%date:

~4,10%.dmp owner=prt  

exp system/system@orcl file=c:

\oracle_bak\sec%date:

~4,10%.dmp owner=sec  

exp system/system@orcl file=c:

\oracle_bak\tea%date:

~4,10%.dmp owner=tea  

exp system/system@orcl file=c:

\oracle_bak\pic%date:

~4,10%.dmp owner=pic  

exp system/system@orcl file=c:

\oracle_bak\system%date:

~4,10%.dmp owner=system  

path=D:

\WinRAR 3.20 

rar a Data%date:

~4,10%.rar *%date:

~4,10%.dmp 

del *%date:

~4,10%.dmp 

二.Linux平台下

功能:

1、每天数据库exp全备份

2、自动删除7天前的备份,系统只保留当前7天的备份

1.系统用户一览

用户

所在组

权限

密码

root

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

orcl

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"|mail-s"expfullbackupfailed"$RECIPT

exit1

fi

#设置备份文件格式

#设置删除备份文件的格式,当前为删除1个月前的备份

#设置备份时间

backuptime=`date+"%Y%m%d%H"`

#设置删除时间(例如现在是2013-3-23那么这地方就是2013-2-23)

deletetime=`date-d"1monthago"+"%Y%m%d%H"`

#这个地方给你自定义了一个变量记录你的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

echo"文件删除失败......."

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<

#这里是FTP服务器的存放oracl数据库备份文件目录

cd$dest_posion

#进入之后删除上个月的...当然你也可以定义删除上上个月的等等都是date-d设置的

mrm${deletetime}.tar.gz

mput${backuptime}.tar.gz

bye

EOF

#如果上面FTP传输完成的话就发送邮件给指定的外网你的邮箱

if[$?

-eq0];then

##Sendemailtoadministrator######

echo`ls`|mail-s"数据库备份完毕$(date+"%Y%m%d"),请知会"yourmail@---fbackup_report@

else

echo"FTP传输失败....."

fi

注意:

date-d"1monthago"命令代表获取当前1个月之前的时间

date-d"1weekago"命令代表获取当前1周之前的时间

date-d"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:

00执行

0,1017**0,2,3每周日,周二,周三的17:

00和17:

10执行

0-10171**毎月1日从17:

00到7:

10毎隔1分钟执行

001,15*1毎月1日和15日和一日的0:

00执行

4241**  毎月1日的4:

42分执行

021**1-6  周一到周六21:

00执行

0,10,20,30,40,50**** 每隔10分执行

*/10****      每隔10分执行

*1***        从1:

0到1:

59每隔1分钟执行

01***        1:

00执行

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 $FIELNAME 

注:

创建的文件都是Oracle用户oinstall组的。

 

#!

/bin/bash

######Oracle infor#####

export ORACLE_HOME=/oracle/ruankodb/product/db/10g

export ORACLE_SID=test

export 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

##FTPserver######

FTP_HostName=192.168.0.211

FTP_UserName=ftpbackup

FTP_PassWord='passwd'

FTP_BackupDir=DBBACKUP

########

TodayDBBackup=db-*-$(date +"%Y%m%d").dmp

OldDBBackup=db-*-$(date -d -3day +"%Y%m%d").dmp

##backuping######

exp $ORSQL_UserName1/$ORSQL_PassWord1 file=/dbbackup/db-$Backup_Database_Name1-$(date +"%Y%m%d").dmp;

exp $ORSQL_UserName2/$ORSQL_PassWord2 file=/dbbackup/db-$Backup_Database_Name2-$(date +"%Y%m%d").dmp;

exp $ORSQL_UserName3/$ORSQL_PassWord3 file=/dbbackup/db-$Backup_Database_Name3-$(date +"%Y%m%d").dmp;

rm -f /dbbackup/$OldDBBackup

cd /dbbackup/

##ftpserver######

lftp $FTP_HostName -u $FTP_UserName,$FTP_PassWord << EOF

cd $FTP_BackupDir

mrm $OldDBBackup

mput $TodayDBBackup

bye

EOF

##Send email to administrator######

echo `ls`| mail -s "数据库备份完毕$(date +"%Y%m%d"),请知会" yourmail@  -- -f  backup_report@

##################################

##################################

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 解决方案

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1