天天看點

linux 下定時備份Oracle資料庫

備份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 {} \;

繼續閱讀