1. 程式人生 > 實用技巧 >oracle備份指令碼

oracle備份指令碼

#!/bin/bash

oracleDir=/home/oracle
backupDate=`date +%Y-%m-%d`
backupDir=/opt/orackeBackup
deleteDate=`date -d '15 days ago' +%Y-%m-%d`


oracle_backup(){

	if [[ ! -d $backupDir/$backupDate ]]; then
		mkdir -p $backupDir/$backupDate
	fi

	for file in `ls $oracleDir | grep .dmp`
	do
		rm -rf $oracleDir/$file
	done

	su - oracle -c "expdp info/111111 file=info.dmp compression='all'"
	if [ $? -ne 0 ];then
		echo "info資料匯出失敗"
		exit 1
	else
		echo "info資料匯出成功"
	fi



	for dmpfile in `ls $oracleDir | grep .dmp`
        do
                mv $oracleDir/$dmpfile $backupDir/$backupDate
        done
}


upload_oracle_backup_to_fileserver(){

	host=
	passwd=

	cd $backupDir

	zip -r $backupDate.zip $backupDate/

	/usr/bin/expect <<EOF
    	spawn scp $backupDate.zip root@$host:/root/
    	expect {
        	"*yes/no*" {send "yes\r" ; exp_continue}
        	"*password*" {send "$passwd\r" ; exp_continue}
    	}
EOF

	if [ $? -ne 0 ];then
		echo "上傳到遠端備份伺服器失敗"
		exit 1
	else
		echo "上傳到遠端備份伺服器成功"
		rm -rf $backupDate.zip
	fi

}


delete_15dAgo_backup(){

	if [[  -d $backupDir/$deleteDate ]]; then

		rm -rf $backupDir/$deleteDate

		if [ $? -ne 0 ];then
			echo "15天前的Oracle備份刪除失敗"
			exit 1
		else
			echo "15天前的Oracle備份刪除成功"
		fi
	else
		exit 0
	fi
}



echo "-----------------備份開始-----------------"
oracle_backup
echo "-----------------備份結束-----------------"


echo "-----------------上傳開始-----------------"
upload_oracle_backup_to_fileserver
echo "-----------------上傳結束-----------------"


echo "-----------------清理開始-----------------"
delete_15dAgo_backup
echo "-----------------清理結束-----------------"