您好,登錄后才能下訂單哦!
這篇文章主要講解了“怎么實現oracle的exp增量備份”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“怎么實現oracle的exp增量備份”吧!
oracle exp增量備份實驗
https://blog.csdn.net/sinat_16741503/article/details/72876092
Oracle數據庫有三種標準的備份方法,它們分別是導出/導入(EXP/IMP、EXPDP/IMPDP)、熱備份和冷備份。
導出備件是一種邏輯備份,冷備份和熱備份是物理備份。
exp支持增量備份,而expdp不支持增量備份。
exp/imp增量導出是一種常用的數據備份方法,它只能對整個數據庫來實施,并且必須作為SYSTEM來導出。
在進行此種導出時,系統不要求回答任何問題。導出文件名缺省為export.dmp,如果不希望自己的輸出文件定名為
export.dmp,必須在命令行中指出要用的文件名。
增量導出包括三種類型: 完全備份,累積備份,增量備份。
執行增量備份必須滿足下列條件:
1.只對完整數據庫備份有效,且第一次需要full=y參數,以后需要inctype=incremental參數。
2. 用戶必須有EXP_FULL_DATABASE的系統角色。
下面簡單三種備份的用法以及區別:
1,完全備份:顧名思義,導出整個數據庫所有數據
exp system/oracle inctype=complete file=full.dmp log=full.log
2,累積備份:導出上次“完全備份”后數據庫變化的信息
exp system/oracle inctype=cumulative file=cumulative_1.dmp log=sys_cumulative_1.log
3,增量備份:備份上次“備份”后變化的信息
exp system/oracle inctype=incremental file=sys_cumulative_3.dmp log=sys_cumulative_3.log
例如我設置一個oracle備份策略:
周六:完全備份
周日:增量備份
周一:增量備份
周二:增量備份
周三:累積備份
周四:增量備份
周五:增量備份
那么當周六我的數據庫被破壞了(備份之前),恢復數據庫的流程呢,那就是:
第一,用命令CREATE DATABASE重新生成數據庫結構。
第二,創建一個足夠大的附加回段。
第三,完全備份導入(周六)
imp system/oracle inctype=RESTORE FULL=y FILE=周六完全備份文件
第四,累積備份導入(周三)
impsystem/oracle inctype=RESTORE FULL=y FILE=周三累積備份文件
第五,增量備份導入(周四)
impsystem/oracle inctype=RESTORE FULL=y FILE=周四累積備份文件
第六,增量備份導入(周五)
impsystem/oracle inctype=RESTORE FULL=y FILE=周五累積備份文件
注意:使用這種方式對oracle數據庫進行備份的,有一個弊端,就是最后一次備份到數據庫宕機前的數據會丟失。
--下面給大家附上一段博主自己寫的完全備份策略腳本,累積備份和增量備份修改部分參數后即可:
#!/bin/bash
#oracle數據庫備份用腳本,該腳本對全庫進行備份,每周六1:00執行
##############################
##author-------***###
##############################
if [ -f ~/.bash_profile ]; then
. ~/.bash_profile
fi
set -e
last_day=`date -d "-7 day" +%Y%m%d`
#上次數據備份時間
stime=`date +%s`
echo `date +"%F %T"`################### 全庫備份開始##################
cd /mnt/sd02/oracle_bak_68/
#備份數據存放目錄
/data/app/oracle/product/11.2.0/dbhome_1/bin/exp system/oracle inctype=complete
file=sys_all_`date +%Y%m%d`.dmp log=sys_all_`date +%Y%m%d`.log
#聲明exp路徑,有些環境下不聲明在定時任務中報錯找不到該命令
rm sys_all_${last_day}.dmp
rm sys_all_${last_day}.log
#刪除上周完全備份文件
etime=`date +%s`
s=`echo "scale=0; ($etime - $stime)%60" | bc`
m=`echo "scale=0; ($etime - $stime)/60%60" | bc`
h=`echo "scale=0; ($etime - $stime)/60/60" | bc`
echo `date +"%F %T"`################全庫備份結束#####################
echo `date +"%F %T"` end 腳本執行耗時 $h 小時 $m 分鐘 $s 秒
--定時任務中備份策略設置如下:
####全庫備份用腳本,每周六早上一點執行
01 01 * * 6 sh /home/oracle/zcb/oracle_all_bak.sh >>/home/oracle/zcb/log/oracle_a
ll_`date +"\%Y\%m\%d"`.log 2>&1
####增量備份腳本,每周日,周一,周二,周四,周五 執行
00 01 * * 0 sh /home/oracle/zcb/oracle_incremental_bak.sh >>/home/oracle/zcb/log/oracle_in
cremental_`date +"\%Y\%m\%d"`.log 2>&1
00 01 * * 1 sh /home/oracle/zcb/oracle_incremental_bak.sh >>/home/oracle/zcb/log/oracle_in
cremental_`date +"\%Y\%m\%d"`.log 2>&1
00 01 * * 2 sh /home/oracle/zcb/oracle_incremental_bak.sh >>/home/oracle/zcb/log/oracle_in
cremental_`date +"\%Y\%m\%d"`.log 2>&1
00 02 * * 4 sh /home/oracle/zcb/oracle_incremental_bak.sh >>/home/oracle/zcb/log/oracle_in
cremental_`date +"\%Y\%m\%d"`.log 2>&1
00 01 * * 5 sh /home/oracle/zcb/oracle_incremental_bak.sh >>/home/oracle/zcb/log/oracle_in
cremental_`date +"\%Y\%m\%d"`.log 2>&1
####累積備份腳本,每周三執行
00 01 * * 3 sh /home/oracle/zcb/oracle_cumulative_bak.sh >>/home/oracle/zcb/log/oracle_cu
mulative_`date +"\%Y\%m\%d"`.log 2>&1
感謝各位的閱讀,以上就是“怎么實現oracle的exp增量備份”的內容了,經過本文的學習后,相信大家對怎么實現oracle的exp增量備份這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。