32. linux下oracle數據庫定時備份


這里以oradatabak.sh(里面的內容要根據實際修改)腳本放在/u01/11g/datapump下為例:

 

#1.添加腳本執行權限

chmod +x /u01/11g/datapump/oradatabak.sh

#2.在oracle用戶下添加定時任務,每天晚上23點,以oracle用戶執行oradatabak.sh備份文件

su - oracle

crontab -e

00 23 * * * /u01/11g/datapump/oradatabak.sh

 

#3.重啟crond

service crond restart

 

#4.oradatabak.sh腳本內容如下:

#!/bin/bash
#:本腳本自動備份1天的數據庫,每次備份完成后,刪除1天之前的數據。
#加載oracle的相關參數
#如果oracle參數不明確,請使用命令查看
# su - oracle
# echo $ORACLE_HOME
export ORACLE_BASE=/u01/11g
export ORACLE_HOME=/u01/11g/product/11.2.0
export ORACLE_SID=orcl
export PATH=$ORACLE_HOME/bin:$PATH:$HOME/bin
#oracle字符集
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
#ORACLE_HOME
ORACLE_HOME=/u01/11g/product/11.2.0
#獲取當前時間,格式:20150210
DATE=$(date +%Y%m%d)
#刪除1天前的文件
days=1
#執行備份的用戶
bakuser=TEST
#執行備份的用戶密碼
bakuserpass=TEST
#服務器IP
IP=192.168.0.1
#dumpfilename
dumpfilename=$bakuser"_"$DATE
#設置備份目錄
export backup_dir=/u01/11g/datapump
#開始備份,此處采用expdp數據方式導出
echo "start oracle backup ..."
#echo $ORACLE_HOME/bin/expdp $bakuser/$bakuserpass schemas=$bakuser dumpfile=$dumpfilename.dmp directory=DPDATA logfile=$dumpfilename.log
$ORACLE_HOME/bin/expdp $bakuser/$bakuserpass@$IP/orcl schemas=$bakuser dumpfile=$dumpfilename.dmp directory=DPDATA logfile=$dumpfilename.log
echo 'Oracle backup successfully.'
#開始壓縮
cd $backup_dir
echo "開始壓縮..."
tar zcvf $dumpfilename.tar.gz $dumpfilename.dmp
echo "壓縮完畢"
#刪除.dmp文件
rm -rf $dumpfilename.dmp
#刪除1天前的備份文件
echo 'remove files one day ago...'
find $backup_dir -type f -name "*.tar.gz" -mtime +$days -exec rm -f {} \;
find $backup_dir -type f -name "*.log" -mtime +$days -exec rm -f {} \;
echo 'remove successsfully.'

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM