1. 程式人生 > >LINUX下ORACLE定時備份資料,使用的expdp。

LINUX下ORACLE定時備份資料,使用的expdp。

1、root賬戶登陸,切換到ORACLE使用者。

su - oracle
2、建立一個名為te.sh的指令碼,並授權可執行。
mkdir /home/oracle/te/te.sh
chomod 775 /home/oracle/te/te.sh 
3、vi 編輯te.sh,新增如下指令碼。
if [ -f ~/.bash_profile ];  
then  
  . ~/.bash_profile  
fi  
export ORACLE_HOME=/data1/oracle/app/oracle/product/11.2.0/db_1
export ORACLE_SID=例項名
export PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin
export DATA_DIR=已經授權匯出使用者expdp的路徑
export oldFileName=`date -d "1 hours ago" +%Y%m%d%H`
export nowFileName=`date +%Y%m%d%H`
echo "start......"
expdp 使用者名稱/密碼 tables=資料表  dumpfile=$nowFileName.dmp DIRECTORY=DMPDIR log=$nowFileName.log
echo "Delete the file bakup before hours..."
rm -rf $DATA_DIR/$oldFileName.dmp
rm -rf $DATA_DIR/$oldFileName.log
echo "finished....."
4、指令碼解釋。

(1)為單個使用者每次登陸設定一次環境變數,一定要有這一段,否者定時無效。

if [ -f ~/.bash_profile ];  
then  
  . ~/.bash_profile  
fi  
 (2)匯入環境變數和者定義變數。
export ......

 (3)、date 用來處理shell指令碼的時間,具體可以檢視對應的文件。
`date -d "1 hours ago" +%Y%m%d%H`  --一個小時之前,格式為:年月日時
`date +%Y%m%d%H` --當前時間,格式為:年月日時
 (4)、刪除一小時前的檔案。
rm -rf $DATA_DIR/$oldFileName.dmp
rm -rf $DATA_DIR/$oldFileName.log

5、oracle的定時任務。現在是在oracle使用者下使用,預設對oracle使用者操作,如果用的root的需要指定對哪個使用者操作,有一定風險。

crontab -e

 crontab -r : 刪除當前的定時 
 crontab -l : 列出當前的定時
 crontab -e : 編輯檔案



6、crontab -e 定時引數。
5 * * * * /home/oracle/te/te.sh --每個小時5分鐘執行
 格式:[分][時][月][年][周][指令碼的路徑]