1. 程式人生 > >linux下Oracle實現資料的自動備份

linux下Oracle實現資料的自動備份

由於近期工作的原因,要做一個簡單的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