馬虎大意,Oracle導出腳本上的兩個點

今天須要給現場準備一個備份策略,打算使用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' 複製代碼

由於本身的馬虎大意,小白浪費了好多時間啊,因此記錄下來。

相關文章
相關標籤/搜索