今天須要給現場準備一個備份策略,打算使用exp的導出和增量備份作爲這個備份策略的主旋律,因此備份的策略以下:數據庫
數據庫的備分任務能夠作以下安排:
bash
星期一:徹底導出(export_1.dmp) oracle
星期二:增量導出(export_2.dmp) ui
星期三:增量導出(export_3.dmp) spa
星期四:增量導出(export_4.dmp) code
星期五:累計導出(export_5.dmp) cdn
星期六:增量導出(export_6.dmp) blog
星期日:增量導出(export_7.dmp)
rem
備份策略有了剩下的就是備份方法了,因此方法以下:cmd
(1)「徹底」增量導出(Complete)
備份整個數據庫,腳本內容以下:
C:\>exp system/oracle inctype=complete file=D:\backup\data\exp_incr_full.dmp log=D:\backup\log\exp_incr_full.log 複製代碼
(2)「增量型」增量導出(Incremental)
備份上一次備份後改變的數據,腳本內容以下:
C:\>exp system/oracle inctype=incremental file=D:\backup\data\exp_incr_incr.dmp log=D:\backup\log\exp_incr_incr.log 複製代碼
(3)「累積型」增量導出(Cumulative)
備份自上次「徹底」導出以後數據庫中變化了的數據。腳本內容以下:
C:\>exp system/oracle inctype=cumulative file=D:\backup\data\exp_incr_cum.dmp log=D:\backup\log\exp_incr_cum.log 複製代碼
若是在週日數據庫遭到意外破壞,數據庫管理員可按照以下步驟恢復數據庫:
第一步:用命令CREATE DATABASE從新生成數據庫結構;
第二步:建立一個足夠大的附加回滾,供imp使用。
第三步:徹底增量導入1:
imp system/manager inctype=RESTORE FULL=y FILE=A
複製代碼
第四步:累計增量導入5:
imp system/manager inctype=RESTORE FULL=Y FILE=E
複製代碼
第五步:最近增量導入6:
imp system/manager inctype=RESTORE FULL=Y FILE=F
複製代碼
因此準備寫一個exp的導出腳本,腳本內容以下:
@echo off
echo ================================================
echo Windows環境下Oracle數據庫的自動備份腳本
echo 1. 使用當前日期命名備份文件。
echo 2. 自動刪除7天前的備份。
echo ================================================
::以「YYYYMMDD」格式取出當前時間。
set BACKUPDATE=%date:~0,4%%date:~5,2%%date:~8,2%
::設置用戶名、密碼和要備份的數據庫。
set USER=system
set PASSWORD=oracle
set DATABASE=prod
::建立備份目錄。
if not exist "D:\backup\data" mkdir D:\backup\data
if not exist "D:\backup\log" mkdir D:\backup\log
set DATADIR=D:\backup\data
set LOGDIR=D:\backup\log
exp %USER%/%PASSWORD%@%DATABASE% file=%DATADIR%\data_%BACKUPDATE%.dmp log=%LOGDIR%\log_%BACKUPDATE%.log
::刪除7天前的備份。
forfiles /p "%DATADIR%" /s /m *.* /d -7 /c "cmd /c del @path"
forfiles /p "%LOGDIR%" /s /m *.* /d -7 /c "cmd /c del @path"
exit
複製代碼
將腳本使用txt文本編輯後改爲bat格式執行發現報錯,由於執行窗口報錯太快看不到因此打算分步執行。
打開一個命令提示符窗口,執行如下命令:
通過分步執行後發現了問題,LRM-00108參數無效?怎麼可能,難道是我打錯了?我將用戶密碼從新敲一遍,沒問題啊。根據報錯上網查帖子,折騰一段時間後才找到,原來Windows下的備份腳本和LINUX不一樣,須要給用戶密碼加上單引號。
加上單引號後成功度過第一個問題,又出現第二個問題,又是一頓查帖子找問題,發現仍是兩個單引號的問題。好吧,小白表示白白浪費了時間。
exp '%USER%/%PASSWORD%@%DATABASE%' file=%DATADIR%\data_%BACKUPDATE%.dmp log='%LOGDIR%\log_%BACKUPDATE%.log' 複製代碼
由於本身的馬虎大意,小白浪費了好多時間啊,因此記錄下來。