#!/bin/bash
# # Last updated: 2010-04-21
#
---------------------------------------------------------------------
# Copyright (C) 2010 lijun #
# Email : lijun926@139.com #
# Web :
http://www.taocaile.com/ #
# Mob : 13811533892 #
#
---------------------------------------------------------------------
set -x
#setting oracle env
export ORACLE_BASE=/opt/app/oracle
export ORACLE_HOME=/opt/app/oracle/product/10.2
export ORACLE_SID=orcl
export ORACLE_TERM=xterm
export NLS_LANG="SIMPLIFIED CHINESE_CHINA.AL32UTF8"
export
TNS_ADMIN=/opt/app/oracle/product/10.2/network/admin
export ORA_NLS10=/opt/app/oracle/product/10.2/nls/data
export
LD_LIBRARY_PATH=/opt/app/oracle/product/10.2/lib:/opt/app/oracle/product/10.2
export
PATH=/opt/app/oracle/product/10.2/bin:$PATH
#-----------------------Date format your backup
file------------------------------------
time=$(date +"%d-%m-%Y")
#-----------------------The directory for story your backup
file-------------------------
bak_home=/data
bak_dest=/data/oracle_bak/data
mkdir -p $bak_dest/$time
#-----------------------Check the dircetory for story backup
is writeable-----------------
test ! -w $bak_dest && echo
"Error: $bak_dest is un-writeable."
&& exit 0
#-----------------------Check the directoy for story backup
the newest backup--------------
test ! -d "$bak_dest/$time" &&
mkdir -p "$bak_dest/$time"
#----------------------Create log
file-----------------------------------------------------
bak_log=/data/oracle_bak/log
#mkdir -p $bak_log/$time
#----------------------check the disk for story backup is full
and mail warn----------------
report="lijun926@139.com"
used=$(df -h|grep $bak_home|awk '{print
$5}'|sed 's/%//g')
warn=85
if [ $used -ge $warn ];then
echo "the disk $bak_home space is full and check it"|mail -s
"exp full backup failed" $report
exit 1
fi
#------------------------------starting
backup----------------------------------------------
/opt/app/oracle/product/10.2/bin/exp system/oracle@orcl full=y
buffer=65536 file=$bak_dest/$time/$time.dmp
log=$bak_log/$time.log
#-----------------------------del
oldfile------------------------------------------------
oldtime=$(date --date '10 days ago ' +'%d-%m-%Y')
cd $bak_dest
if [ -d $oldtime ]
then
rm -rf $oldtime
>>$bak_log/$time.log
echo "[$oldtime] delete old file
success!">>$bak_log/$time.log
else
echo "[$oldtime] no old
file!">>$bak_log/$time.log
fi
注意事项:
1:在脚本里面需要设置oracle的相关环境变量,并且使用export.
2:备份脚本最好再oracle用户下面执行,同时给设置oracle的相关权限。
3:脚本里面设置的oracle的环境变量最好是使用绝对路径,否则crond在执行的时候不能解释那些变量的值,造成加入cron不执行的问题。。