1. 程式人生 > >(轉)linux自動備份oracle數據庫並上傳到備份服務器 腳本實現

(轉)linux自動備份oracle數據庫並上傳到備份服務器 腳本實現

oralce 查看 cal .com 中間 term star 開始 library

實際項目中,備份數據是不可缺少的一步,完成數據的自動備份減少個人的工作量,是我們的目標。之前很少寫過腳本,不過這些簡單的操作還是可以做到的!話不多說,開始具體介紹:
oracle版本:10.2.0
操作系統:linuxredhat6.3
具體操作:
(1)在服務器上創建備份目錄,並賦予權限
mkdir -p /backup/oracledata #新建Oracle數據庫備份目錄

chown -R oracle:oinstall /backup/oracledata -R #設置目錄權限為oinstall用戶組的oracle用戶(用戶oracle與用戶組oinstall是在安裝Oracle數據庫時設置的)

(2)完成備份腳本


vi /backup/oracledata/ordatabak.sh #新建文件
加入下面信息:
#!/bin/sh ORACLE信息可以通過 .bash_profile 查看
export ORACLE_BASE=/oracle/app/oracle
export ORACLE_SID=orcl
export ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1
export PATH=$PATH:$ORACLE_HOME/bin
export ORACLE_TERM=xterm
export PATH=$PATH:$ORACLE_HOME/bin:$HOME/bin:/usr/bin:/sbin:/usr/sbin
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/rdbms/lib:/lib:/usr/lib: /usr/local/lib
export LANG=C
export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
#以上代碼為Oracle數據庫運行賬號oracle的系統環境變量設置,必須添加,否則crontab任務計劃不能執行。
dateTime=`date +%Y_%m_%d` #當前系統時間
days=7 #刪除7天前的備份數據s
orsid=‘127.0.0.1:1521/orcl‘ #oralce連接信息
orowner=oracle # 備份此用戶下面的數據
bakuser=oracle #用此用戶來執行備份,必須要有備份操作的權限
bakpass=oracle #執行備註的用戶密碼
bakdir=/DATA/bakorcldata/moodle #備份文件路徑,需要提前創建好
bakdata=$orowner"_"$dateTime.dmp #備份數據庫名稱
baklog=$orowner"_"$dateTime.log #備份執行時候生成的日誌文件名稱
ordatabak=$orowner"_"$dateTime.tar.gz #最後保存的Oracle數據庫備份文件
remotePath=/opt/oracle/bakorcl/ #上傳到遠程服務器的路徑

cd $bakdir #進入備份目錄
mkdir -p $orowner #按需要備份的Oracle用戶創建目錄
cd $orowner #進入目錄
exp $bakuser/$bakpass@$orsid grants=y owner=$orowner file=$bakdir/$orowner/$bakdata log=$bakdir/$orowner/$baklog #執行備份
tar -zcvf $ordatabak $bakdata $baklog #壓縮備份文件和日誌文件

find $bakdir/$orowner -type f -name "*.log" -exec rm {} \; #刪除備份文件
find $bakdir/$orowner -type f -name "*.dmp" -exec rm {} \; #刪除日誌文件
find $bakdir/$orowner -type f -name "*.tar.gz" -mtime +$days -exec rm -rf {} \; #刪除7天前的備份(註意:{} \中間有空格)
scp $bakdir/$orowner/$ordatabak 192.168.0.10:$remotePath #將備份文件上傳到遠程服務器 如果不輸人密碼上傳請參考http://blog.sina.com.cn/s/blog_957ef38b0102vuxy.html
:wq! 保存 退出

(3)添加腳本執行權限
chmod +x /backup/oracledata/ordatabak.sh #添加腳本執行權限
(4)編輯系統任務執行計劃
crontab -e
輸入一下信息“:

00 01 * * * /DATA/bakorcldata/oradatabak.sh#每天淩晨1點,以oracle用戶執行ordatabak.sh備份文件

:wq! #保存退出

重啟crontab

service crond restart

從此每天的淩晨1點 系統會自動完成數據庫的備份,壓縮,並上傳到遠程服務器的指定路徑下!

(轉)linux自動備份oracle數據庫並上傳到備份服務器 腳本實現