#!/bin/bash
export ORACLE_BASE=/home/data/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1
export ORACLE_SID=orcl
export ORACLE_TERM=xterm
export PATH=$ORACLE_HOME/bin:/usr/sbin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export LANG=C
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
date=`date +%Y%m%d%H%M`
days=60 #保留天數
orsid=orcl
orowner=user #執行備份的使用者
bakuser=user #備份的使用者
bakpass=pass #執行備份的使用者密碼
bakdir=/home/oracle/datadump #備份路徑
rsyncdir=/home/orafile/datadump
bakdata=$orowner"_"$date.dmp
baklog=$orowner"_"$date.log
ordatabak=$orowner"_"$date.tar.gz
ordatadmp=$orowner"_"$date.dmp
cd $bakdir
mkdir -p $orowner
cd $orowner
exp $bakuser/$bakpass@$orsid file=$bakdir/$orowner/$bakdata log=$bakdir/$orowner/$baklog owner=$orowner
#nohup zip -m $ordatabak $ordatadmp $baklog #壓縮檔案zip
tar -zcvf $ordatabak $ordatadmp $baklog
#刪除備份檔案
find $bakdir/$orowner -type f -name "*.log" -exec rm {} \;
#刪除日誌檔案
find $bakdir/$orowner -type f -name "*.dmp" -exec rm {} \;
#刪除60天前的備份(注意:{} \中間有空格)
find $bakdir/$orowner -type f -name "*.tar.gz" -mtime +$days -exec rm -rf {} \;
#nohup zip -m $ordatabak $ordatadmp $baklog #壓縮檔案zip 此壓縮方式檔案太大會導致壓縮失敗