ORACLE定時備份方案


ORACLE定時備份方案

采用ORACLE的EXP工具,實現ORACLE的備份;采用LINUX的服務crond實現定時功能。

1 編輯SH,實現備份功能

#vi oracle_backup.sh,輸入以下內容

#!/bin/sh

ORACLE_BACKUP_HOME=/home/oracle/backup   #定義ORACLE備份根目錄

BACKUP_DATA=$ORACLE_BACKUP_HOME/day   #定義ORACLE備份數據文件根目錄

BACKUP_LOG=$BACKUP_DATA/log  #定義ORACLE備份日志文件根目錄

export  ORACLE_BACKUP_HOME  BACKUP_DATA BACKUP_LOG 

DATA_FILE_NAME=data_backup          #定義ORACLE備份日志文件名字前綴

LOG_FILE_NAME=log_backup             #定義ORACLE備份日志文件名字前綴

export DATA_FILE_NAME LOG_FILE_NAME

BACKUP_AMOUNT=4        #定義ORACLE備份文件保存數量

export BACKUP_AMOUNT

 

datafile_amount=$(find $BACKUP_DATA -type f -name $DATA_FILE_NAME'_'*.dmp|wc -l)   #查詢ORACLE備份數據文件根目錄下備份數據文件的數量

logfile_amount=$(find $BACKUP_LOG -type f -name $LOG_FILE_NAME'_'*.log|wc -l)      #查詢ORACLE備份日志文件根目錄下備份日志文件的數量

del_datafile_count=$(($datafile_amount-$BACKUP_AMOUNT+1));   #計算需要刪除ORACLE備份數據文件的數量

del_logfile_count=$(($datafile_amount-$BACKUP_AMOUNT+1));         #計算需要刪除ORACLE備份日志文件的數量

 

if(($datafile_amount>=$BACKUP_AMOUNT));then

       echo $BACKUP_DATA"路徑下文件太多,正在清除備份數據文件"

       for((i=0;i<$del_datafile_count;i++))

       do

       ls -t $BACKUP_DATA/$DATA_FILE_NAME'_'*.dmp| awk 'END{if(NR>=$BACKUP_AMOUNT){system("rm -rf "$NF);system("echo  $BACKUP_DATA路徑下,已刪除文件"$NF)}}'#刪除修改時間最早的一個數據文件

       done

fi

 

if(($logfile_amount>=$BACKUP_AMOUNT));then

       echo $BACKUP_LOG"路徑下文件太多,正在清除備份日志文件"

       for((i=0;i<$del_logfile_count;i++))

       do

       ls -t $BACKUP_LOG/$LOG_FILE_NAME'_'*.log| awk 'END{if(NR>=$BACKUP_AMOUNT){system("rm -rf "$NF);system("echo  $BACKUP_LOG路徑下,已刪除文件"$NF)}}'#刪除修改時間最早的一個日志文件

       done

fi

 

rq=`date +"%Y%m%d%s"`      #獲取當前系統時間

su - oracle -c "/oracle/product/10.2.0/db_1/bin/exp sgedptwo/sgdb321@SGEMDP file=$BACKUP_DATA/$DATA_FILE_NAME'_'$rq.dmp log=$BACKUP_LOG/$LOG_FILE_NAME'_'$rq.log" #備份ORACLE數據庫並記錄日志

2 授予ORACLE用戶使用備份目錄權限

# mkdir /home/oracle/backup

# mkdir /home/oracle/backup/day

# mkdir /home/oracle/backup/day/log

#chown –R /home/oracle/backup

3 使用crond定制定時任務

#ps-ef|grep crond  #查看crond服務是否開啟

#service crond start|stop|restart   #crond服務啟動|停止|重啟命令

#crontab –e,輸入以下內容

0 0 * * * /oracle/oracle_backup.sh   #每天00:00執行任務

0 0 1 * * /oracle/oracle_backup.sh  #每月1號00:00執行任務

 

 

注釋:

* * * * * command to be executed

- - - - -

| | | | |

| | | | ----- Day of week (0 - 6) (Sunday=0 )

| | | ------- Month (1 - 12)

| | --------- Day of month (1 - 31)

| ----------- Hour (0 - 23)

------------- Minute (0 - 59)

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM