LINUX下ORACLE定時備份資料,使用的expdp。
阿新 • • 發佈:2019-01-01
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,新增如下指令碼。
4、指令碼解釋。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....."
(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分鐘執行
格式:[分][時][月][年][周][指令碼的路徑]