Linux環境下資料庫自動邏輯備份

foxmile發表於2007-12-12

以我的測試環境為例,此方法主要是限於在本機執行,如果要在其他機器執行需要修改備份指令碼。

首先建立備份目錄:

[root@founder14 oracle]# mkdir backup

給備份目錄授權

[root@founder14 oracle]# chmod +777 backup

進入備份目錄

[root@founder14 oracle]# cd backup

[root@founder14 backup]#

建立備份指令碼

vi backup.sh

輸入以下文字

#tabase info此處為資料庫使用者名稱、密碼以及備份目錄的變數這些變數是可使用者進行修改的

DB_USER="wzzf"

DB_PASS="wzzf"

BACK_DIR="/home/oracle/backup"

# Others vars此處是資料庫備份時間變數以及目錄變數,這些變數基本不用修改,請複製過去

YEAR=`date +%Y`

MONTH=`date +%m`

DATE=`date +%Y%m%d_%H:%M:%S`

BACK_HOME=$BACK_DIR/$YEAR/$MONTH

#環境變數 相關的環境變數請複製過來,可能會和大家所使用的環境變數不同,但請都複製進來,執行指令碼的時候要用,環境變數每臺機器不同,請檢視oracle 使用者下面.bash_profile

export ORACLE_BASE=/opt/ora9

export ORACLE_HOME=/opt/ora9/product/9.2

export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/Apache/Apache/bin:$PATH

export ORACLE_SID=founder

export LD_LIBRARY_PATH=/opt/ora9/product/9.2/lib:$LD_LIBRARY_PATH

export PATH=$PATH:$JAVA_HOME/bin

export CLASSPATH=$JAVA_HOME/lib

# 備份指令碼 由於是本機備份,所以不用輸入tns名稱

mkdir $BACK_DIR/$YEAR

mkdir $BACK_DIR/$YEAR/$MONTH

$ORACLE_HOME/bin/exp $DB_USER/$DB_PASS file = $BACK_HOME/$DB_USER$DATE.dmp

然後儲存backup.sh

給指令碼授權:

[root@founder14 backup]# chmod +777 backup.sh

設定crontab計劃任務

[root@founder14 backup]# vi /etc/crontab

在檔案的最後加入下列文字:

15 15 * * * oracle /home/oracle/backup/backup.sh

此命令的意思是在每天的1515分使用oracle使用者執行指令碼/home/oracle/backup/backup.sh

修改第一個域的引數會改變執行的分鐘,修改第二個引數會改變執行的小時,修改,修改第三個引數會修改執行的日期,修改第四個引數會修改執行的月份,修改第五個引數會修改執行的星期,下面是Crontab檔案格式簡介:

crontab檔案有六個域,每個域之間用空格或者Tab鍵分開,前五個域都是整數或者*,格式如下(括號裡面是取值範圍)

分鐘(0-59) 小時(0-23) (1-31) (1-12) 星期(0-6) 要執行的命令

其中星期取值0指星期日,其它取值遞推。前面五個域,每個域都可以用*表示所有合法的值,或者用一個列表列出合法的值,各值之間用“,”隔開,也可以用“-”表示一個範圍。

至此linux進行自動備份的指令碼設定完成,系統會在你設定的時間進行自動備份。附件(backup.sh)中是我自己做測試的備份指令碼。

附:backup.sh

#tabase info
#place at db host computer
DB_USER="wzzf"
DB_PASS="wzzf"
BACK_DIR="/home/oracle/backup"

# Others vars
YEAR=`date +%Y`
MONTH=`date +%m`
DATE=`date +%Y%m%d_%H:%M:%S`
BACK_HOME=$BACK_DIR/$YEAR/$MONTH

export ORACLE_BASE=/opt/ora9
export ORACLE_HOME=/opt/ora9/product/9.2
export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/Apache/Apache/bin:$PATH
export ORACLE_SID=founder
export LD_LIBRARY_PATH=/opt/ora9/product/9.2/lib:$LD_LIBRARY_PATH
export CLASSPATH=$JAVA_HOME/lib

# TODO
mkdir $BACK_DIR/$YEAR
mkdir $BACK_DIR/$YEAR/$MONTH
$ORACLE_HOME/bin/exp $DB_USER/$DB_PASS file = $BACK_HOME/$DB_USER$DATE.dmp

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/79499/viewspace-437/,如需轉載,請註明出處,否則將追究法律責任。

相關文章