Oracle備份腳本

目標:我想實現這樣的功能,只要會簡單的linux命令就能實現oracle exp的自動備份

 
環境:linux as3+oracle9i
具體的步驟:
 
1.郵件設置
[root@sxapp1 mail]# cd /etc/mail
[root@sxapp1 mail]# mv submit.cf submit.cfbak
[root@sxapp1 spool]# chmod a+wrx mqueue/
[root@sxapp1 mail]# echo "sdsdssd"|mail -s "sda"
[email protected]

2.建立備份目錄
[root@sxapp1 mail]# su - oracle
[oracle@sxapp1 oracle]$ mkdir -p /home/oracle/phy_backup/data --備份文件存放目錄
[oracle@sxapp1 oracle]$ mkdir -p /home/oracle/phy_backup/log  --備份的log路徑
[oracle@sxapp1 oracle]$ cd /home/oracle/phy_backup
 
3.備份腳本編寫,測試(腳本要根據需求微調,我已經測試通過了)
[oracle@sxapp1 phy_backup]$ vi exp.sh
#!/bin/sh
. /home/oracle/.bash_profile
#define variable......
backup_date=`date +%Y%m%d`
bak_home=/home                           --df -k裏面必須能看見
backup_dest=/home/oracle/phy_backup/data --根據需要填寫
backup_log=/home/oracle/phy_backup/log   --根據需要填寫
RECIPT='[email protected]'            --報警郵件設置
 
--檢查磁盤空間
# Check local disk space..................................
USED=` df -k|grep $bak_home|awk '{print $5}'|awk -F% '{print $1}'`
if [ $USED -gt 85 ]; then
       echo "Disk space is full/243/254please check it"|mail -s "exp full backup failed"  $RECIPT
       exit 1
fi
--開始備份
#starting exp backup.....
exp system/abc123 full=y buffer=65536   file=$backup_dest/data_$backup_date.dmp  log=$backup_log/data_$backup_date.log
--刪除過期的備份文件
# delete expired  backup ...
list=` find $backup_dest -mtime +7`
echo $list
rm -f $list
if [ $? -ne 0 ]; then
       cat $backup_log/data_$backup_date.log|mail -s "exp full backup failed,please check it"  $RECIPT
       exit 1
fi
cat $backup_log/data_$backup_date.log|mail -s "$backup_date exp log "  $RECIPT
~
"exp.sh" 37L, 1237C 已寫入 
 
[oracle@sxapp1 phy_backup]$ chmod a+x exp.sh  --授予可執行權限                                 
[oracle@sxapp1 phy_backup]$ ./exp.sh          --執行備份腳本
Export: Release 9.2.0.7.0 - Production on Thu Dec 14 14:37:53 2006
Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.

Connected to: Oracle9i Enterprise Edition Release 9.2.0.7.0 - Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.7.0 - Production
Export done in ZHS16CGB231280 character set and AL16UTF16 NCHAR character set
About to export the entire database ...
. exporting tablespace definitions
. exporting profiles
. exporting user definitions
. exporting roles
. exporting resource costs
. exporting rollback segment definitions
. exporting database links
. exporting sequence numbers
. exporting directory aliases
. exporting context namespaces
。。。。。。。。。。。。
看腳本是否順利的運行,備份之後應該會收到備份的log,檢查log是否備份正常。如果正常的話就可以做個crontab了,自動執行計劃
[oracle@sxapp1 phy_backup]$ crontab -e
#min  hour  day  month  dayofweek  command
0      2     *    *        *      /home/oracle/phy_backup/exp.sh
表示每天2點開始執行exp備份。
 
提示:
備份腳本至少要具備:1.磁盤空間的檢查 2.備份log的完整記錄 3.備份失敗時的報警機制。 本不可能去整理的東西居然整理出來了,希望對別人能有點幫助。
發佈了2 篇原創文章 · 獲贊 2 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章