備份Oracle資料庫
Linux: cron
cron 指令用來實作定時任務的完成 如每日執行一次的任務 程序
cron 指令是不應該手工啟動的 一般情況下 cron 指令在系統啟動時就由一
個 shell 腳本自動啟動 啟動後 cron 指令會搜尋/var/spool/cron 目錄 尋找
以/etc/passwd 檔案中的使用者名命名的 crontab 檔案 被找到的這種檔案将載
入記憶體 例如一個使用者名為 user 的使用者它所對應的 crontab 檔案就應該是
也就是說 以 該 用 戶 命 名 的 crontab 文 件 存 放 在
/var/spool/cron/user
/var/spool/cron 目錄下面 cron 指令還将搜尋/etc/crontab 檔案 這個檔案是
用不同的格式寫成的 cron 啟動以後它将首先檢查是否有使用者設定了 crontab
檔案 如果沒有就轉入休眠狀态 釋放系統資源 它每分鐘醒過來一次檢視
目前是否有需要運作的指令
可以使用 crontab –l 指令檢視目前已經存在的 cron 任務
在linux裡安裝Oracle10G 将會自動有個Oracle 的使用者名存在。在/var/spool/cron 建個oracle 裡面寫
1 20 * * * /home/oracle/databak/bakup.sh > /dev/null 2>&1
0 22 * * * /home/oracle/databak/delbak.sh > /dev/null 2>&1
然後bakup.sh 如下:
#!
#bakup.sh
##系統名稱(XX系統)
sysname=gdnyw
syspath=/home/oracle/databak/$sysname/
v_date=$(date '+%Y%m%d%H%M%S')
logfile=$syspath/backup.$v_date.log
echo backup_time>>$logfile
date '+%Y-%m-%d %H:%M:%S' >> $logfile
#資料庫使用情況
echo "backup gdnyw">>$logfile
echo "start_time">>$logfile
date '+%Y-%m-%d %H:%M:%S' >> $logfile
cd /home/oracle/product/10.2.0
export ORACLE_HOME=/home/oracle/product/10.2.0
export PATH=$PATH:/home/oracle/product/10.2.0/bin
export ORACLE_SID=EJETDB
echo $syspath
v_date=$(date '+%Y%m%d%H%M%S')
exp gdnyw/gdnywserver file=$syspath/gdnyw$v_date.dmp compress=n >> $logfile
echo "end_time">>$logfile
date '+%Y-%m-%d %H:%M:%S'>>$logfile
#壓縮備份的資料檔案
gzip $syspath/*.dmp
delbak.sh 如下:
#!
#delbak.sh
##系統名稱(XX系統)
sysname=gdnyw
syspath=/home/oracle/databak/$sysname/
find "$syspath" -name "*.gz" -mtime +5 -exec rm {} \;