Shell定时利用data dump导出完整数据库

#!/bin/bash
#############################################################
# Date: 18/12/2012
# Usage: daily fully export the database, and delete the dumped file before 2 days.
# Example: export_db_daily.sh -h host1 -s dbservice1
#############################################################
# create directory expdump as '/home/oracle/backup/expdump';

export ORACLE_HOME=/home/oracle/product/
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:$ORACLE_HOME/lib
export PATH=$PATH:$JAVAHOME/bin:/usr/lib64:$ORACLE_HOME/bin
export CLASSPATH=$CLASSPATH:$ORACLE_HOME/jdbc/lib/ojdbc5.jar

echo $#

USAGE="Usage: command [-h hostname] [-s service_name ]";

if [ $# -ne 4 ]
then 
echo " $USAGE
EXAMPLE: export_db_daily -h host1 -s dbservice1"
exit 0 
else
    echo "export job starts!!"
fi

while getopts "h:s:" OPTION ; do
case "$OPTION" in
h) host="$OPTARG" ;;
s) service_name="$OPTARG" ;;
?) echo "Unrecognized parameter $USAGE" ;
exit 1 ;;
esac
done

export ORACLE_SID=$dbservice1
#Set variable for this script.
dateStr=`/bin/date +%Y%m%d%H`
dmpFileName=$dateStr'full_expdp_'$dbservice1'.dmp'
dmpLogName=$dateStr'full_expdp_'$dbservice1'.log'

#host=`hostname`

echo "the host you specified is $HOST, the OS Server is $host and the oracle instance is $ORACLE_SID " ;

 dmpdir=/home/oracle/backup/expdump

mkdir -p $dmpdir/tmp
if [ -e "$dmpdir/$dmpFileName" ]
then
 mv  $dmpdir/$dmpFileName $dmpdir/tmp/
 mv  $dmpdir/$dmpLogName $dmpdir/tmp/
fi

find $dmpdir/*$service_name'.dmp' -mtime +2 -exec rm {} \;
find $dmpdir/tmp/*$service_name'.dmp' -mtime +2 -exec rm {} \;
find $dmpdir/*.log -mtime +5 -exec rm {} \;

#Begin to dump.
echo $(date +"%y-%m-%d %H:%M:%S") 
echo "----------Begin to dump $dbservice1 of $host.-----------" 
echo "expdp \"/ as sysdba\" full=Y directory=expdump dumpfile=$dmpFileName logfile=$dmpLogName PARALLEL=20 COMPRESSION=ALL"
expdp \"/ as sysdba\" full=Y directory="EXPDUMP" dumpfile=$dmpFileName logfile=$dmpLogName PARALLEL=20 COMPRESSION=ALL
echo "----------End to dump $dbservice1 of $host.-----------" 
echo $(date +"%y-%m-%d %H:%M:%S")


 

这个Shell脚本的思想是为了让“导出数据库”作为一个服务对外开放~

通常来说,如果一台机器上有很多的Instance,可以用一个脚本列出所有要导出的数据库,然后使用crontab定时执行

同时也可以通过Oracle的Program+Scheduler或者OEM来定时执行 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值