linux中shell定時任務執行oracle備份。
1編寫shell腳本
#!/bin/bash
#:本腳本自動備份7天的數據庫,每次備份完成后,刪除7天之前的數據。編寫腳本是否可以執行,請自行測試
#加載oracle的相關參數
#如果oracle參數不明確,請使用命令查看
# su - oracle
# echo $ORACLE_HOME
export ORACLE_BASE=/home/oracle/app
export ORACLE_HOME=/home/oracle/app/oracle/product/11.2.0/dbhome_1
export ORACLE_SID=ORCL
export PATH=$ORACLE_HOME/bin:$PATH:$HOME/bin
#oracle字符集
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
#獲取當前時間,格式:20150210
DATE=$(date +%Y%m%d)
#獲取7天之前的時間,格式:20150203
DATE_RM=$(date -d "7 days ago" +%Y%m%d)
#設置備份目錄,
export DIR=/dbbackup
echo $DIR
#創建日期目錄
mkdir $DIR/$DATE
#開始備份,此處采用exp方式導出,根據實際情況可選用expdb數據方式導出
echo 'Oracle backup...'
exp username/password@ORCL file=$DIR/$DATE'/sbkfw_'$DATE'.dmp' log=$DIR/$DATE'/sbkfw_log_'$DATE'.log'
echo 'Oracle backup successfully.'
echo 'remove...'
rm -rf $DIR/$DATE_RM
echo 'remove successsfully.'
PS:關於是否進行壓縮,請自行更改,因為備份出的數據庫文件大於4G又不想分開壓縮,所有本帖沒有壓縮備份文件。
2給腳本付給可執行權限
chmod 777 dbbackup.sh
3設置linux定時任務
#每天1:30執行腳本
crontab -e 進入vi模式,添加定時任務
30 1 * * * /dbback/dbbackup.sh
Ps:這里有個參數需要說明。如果腳本里邊不想帶oracle的環境變量可以這么寫
30 1 * * * su - oracle -c /dbback/dbbackup.sh
4關於linux在shell中獲取系統時間
獲得當天的日期 date +%Y%m%d
輸出: 20110728
有時候我們需要使用今天之前或者往后的日期,這時可以使用date的 -d參數
獲取明天的日期 date -d next-day +%Y%m%d
獲取前幾天的日期 date -d "7 days ago" +%Y%m%d
獲取昨天的日期 date -d last-day +%Y%m%d