linux下Oracle實現資料的自動備份
阿新 • • 發佈:2018-12-21
由於近期工作的原因,要做一個簡單的oracle資料自動備份,因為是一個單體應用,所以就利用了linux的定時任務和oracle的exp進行資料備份,如果有不足和需要改正的地方,歡迎各位高手指正,不勝感激。
下邊就開始具體的操作:
一、建立備份目錄並賦予許可權
mkdir -p /u01/oracle_bak_data #新建資料備份目錄
mkdir -p /u0a/oracle_bak_shell #新建Oracle備份指令碼目錄
chown -R oracle:oinstall /u01/oracle_bak_data
chown -R oracle:oinstall /u01/oracle_bak_shell
二、建立備份指令碼
cd /u0a/oracle_bak_shell
vi bak_data_shell.sh
在開啟的vi編輯頁面中,輸入i,將以下資訊輸入到指令碼中:
oracle的資訊可以在profile配置檔案中檢視
#!/bin/sh
echo "*****ready for play*****"
export ORACLE_SID=TEST
export ORACLE_BASE=/u01/oracle
export ORACLE_HOME=/u01/oracle/11.0.2
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib:/lib:/usr/lib:/usr/local/lib
export PATH=$ORACLE_HOME/bin:/bin:/usr/bin:/usr/sbin:/usr/local/bin
export LANG=en_us.UTF-8
export NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK
dateTime= `date +%Y_%m_%d`
days=3
orsid='ip:埠/TEST'
oraowner=test
bakuser=test
bakpass=test
bakdir=/u01/oracle_bak_data
bakdata=$oraowner"_"$dateTime.dmp
baklog=$oraowner"_"$dateTime.log
ordatabak=$orowner"_"$dateTime.tar.gz
cd $bakdir
echo "*****starting bak*****"
exp $bakuser/[email protected]$orsid grants=y owner= $oraowner file=$bakdir/$bakdata log=$bakdir/$baklog
echo "*****end bak*****"
echo "*****starting tar*****"
tar -zcvf $ordatabak $bakdata $baklog
echo "*****end tar*****"
echo "*****delete bak_data*****"
find $bakdir/ -type f -name "*.log" -exec rm {} \;
find $bakdir/ -type f -name "*.dmp" -exec rm {} \;
find $bakdir/ -type f -name "*.tar.gz" -mtime +$days -exec rm -rf {} \;
echo "*****end delete*****"
echo "*****end bak*****"
然後按“ESC”鍵,輸入:wq! 然後回車
三、給指令碼新增X
chmod +X bak_data_shell.sh
四、編輯系統定時任務
crontab -e
#輸入一下資訊
00 01 * * * /u01/oracle_bak_shell/bak_data_shell.sh #每天凌晨1點執行
:wq!
五、重啟crontab
service crond restart