建議一:
利用任務計劃、批次檔和ORACLE的EXP匯出功能,可以根據日期自動產生ORACLE備份檔案,大大方便了ORACLE資料備份。:
1、建立批次檔backup.bat\.
exp system/manager file=d:\backup\oracle\oracle%date:~0,10%.dmp owner=system log=d:\backup\oracle\oracle%date:~0,10%.log
將產生oracle2006-01-09.dmp檔案
exp system/manager file=d:\backup\oracle\oracle%date:~11,3%.dmp owner=system log=d:\backup\oracle\oracle%date:~11,3%.log
將產生oracle星期一.dmp檔案,則每周迴圈保留一個備份檔案,共7個備份檔案迴圈
2、添加一個任務計劃
利用任務計劃嚮導,根據備份原則設定自動執行任務的時間頻率(例如每天零時),執行d:\oracle\backup.bat
3、以後每天將在目錄中產生形如“oracle2005-08-31.dmp和oracle2005-08-31.log”的備份和記錄檔。
說明:
1、%date%的值在不同的系統、語言版本下可能是不一樣的,控制台裡面地區選項的設定也會改變%date%的值。請先在命令列中測試 echo %date% 的傳回值。%date:~4,10% 是返回日期函數,~後的第一個參數是要截取的起始位置(從0開始),第二個參數是要截取的長度,如沒有則是截取到最後,參數可酌情修改。
2、如需要準確的時間做為檔案名稱,請用%time%函數,參數同上。
建議二:
@echo off
set filename=e:\data_bak\%date:~8,2%日
exp userid=user/pass@esdata file=%filename%.dmp owner=user INDEXES=y grants=y constraints=y compress=y log=%filename%.log
rar a %filename%.rar %filename%.*
del %filename%.dmp
del %filename%.log
放計劃任務裡面定時執行,
檔案名稱以日期的day部分來命名
備份後調用rar進行壓縮
這樣可以儲存一個月的曆史資料
注意:需要把program files/winrar目錄下的rar.exe拷貝到系統system32目錄下
如果是以星期命名,則需要將set filename=e:\data_bak\%date:~8,2%日修改為
set filename=e:\data_bak\%date:~0,3%
建議三:
以下為ORACLE 自動備份批次檔內容,請配合任務計劃實現
@ECHO OFF
SET BACKPATH=d:\
ECHO 準備備份資料庫
REM 7天一個迴圈
IF EXIST %BACKPATH%\ONE GOTO ONE
IF EXIST %BACKPATH%\TWO GOTO TWO
IF EXIST %BACKPATH%\THREE GOTO THREE
IF EXIST %BACKPATH%\FOUR GOTO FOUR
IF EXIST %BACKPATH%\FIVE GOTO FIVE
IF EXIST %BACKPATH%\SIX GOTO SIX
IF EXIST %BACKPATH%\SEVEN GOTO SEVEN
ECHO E > %BACKPATH%\ONE
:ONE
SET BACKPATH_FULL=%BACKPATH%\ONE
REN %BACKPATH%\ONE TWO
GOTO BACK
:TWO
SET BACKPATH_FULL=%BACKPATH%\TWO
REN %BACKPATH%\TWO THREE
GOTO BACK
:THREE
SET BACKPATH_FULL=%BACKPATH%\THREE
REN %BACKPATH%\THREE FOUR
GOTO BACK
:FOUR
SET BACKPATH_FULL=%BACKPATH%\FOUR
REN %BACKPATH%\FOUR FIVE
GOTO BACK
:FIVE
SET BACKPATH_FULL=%BACKPATH%\FIVE
REN %BACKPATH%\FIVE SIX
GOTO BACK
:SIX
SET BACKPATH_FULL=%BACKPATH%\SIX
REN %BACKPATH%\SIX SEVEN
GOTO BACK
:SEVEN
SET BACKPATH_FULL=%BACKPATH%\SEVEN
REN %BACKPATH%\SEVEN ONE
GOTO BACK
:BACK
EXP TESTUSER/TEST FILE=%BACKPATH_FULL%.DMP
SET BACKPATH=
SET BACKPATH_FULL=
EXIT
建議四:
RMAN TARGET=RMAN/RMAN@ORCL < C:\RMAN.TXT
建議五:
在文本裡編輯cmd命令。然後儲存成bat檔案。在windows中定義任務計劃,就
可以自動執行了。
例:
編輯文字檔
del c:\exp\*.dmp
exp userid=cw/cw@db file='c:\exp\*.dmp' tables=(student)
儲存成bat檔案
建議六:
寫個簡單的批次檔備份恢複:
備份:
@echo off 不顯示命令列
echo 開始備份表..... 列印資訊
D: DOS切換到D: 盤
cd oracle\ora92\bin 切換到cd oracle\ora92\bin目錄
exp 使用者名稱/密碼@資料庫 file=d:\config_bak.dmp tables=(table1,table2) 備份表一表二到d:\config_bak.dmp
echo 備份完畢!
恢複:
@echo off
echo 開始恢複表.....
D:
cd oracle\ora92\bin
imp 使用者名稱/密碼@資料庫 file=d:\config_bak.dmp tables=(table1,table2) ignore=y
sqlplus /nolog @oraStartup.sql>>oraStartup.log 調用sql檔案
pause 執行完sql檔案以後暫停,看資訊
echo 恢複完畢!
編寫oraStartup.sql
conn 使用者名稱/密碼@資料庫 as sysdba
select * from table1;
quit;
執行環境:可以在SQLPLUS.EXE或者DOS(命令列)中執行,
DOS中可以執行時由於 在oracle 8i 中 安裝目錄\ora81\BIN被設定為全域路徑,
該目錄下有EXP.EXE與IMP.EXE檔案被用來執行匯入匯出。
oracle用java編寫,我想SQLPLUS.EXE、EXP.EXE、IMP.EXE這倆個檔案是被封裝後的類檔案。
SQLPLUS.EXE調用EXP.EXE、IMP.EXE他們所包裹的類,完成匯入匯出功能。
下面介紹的是匯入匯出的執行個體,嚮導入匯出看執行個體基本上就可以完成,因為匯入匯出很簡單。
資料匯出:
1 將資料庫TEST完全匯出,使用者名稱system 密碼manager 匯出到D:\daochu.dmp中
exp system/manager@TEST file=d:\daochu.dmp full=y
2 將資料庫中system使用者與sys使用者的表匯出
exp system/manager@TEST file=d:\daochu.dmp owner=(system,sys)
3 將資料庫中的表table1 、table2匯出
exp system/manager@TEST file=d:\daochu.dmp tables=(table1,table2)
4 將資料庫中的表table1中的欄位filed1以"00"打頭的資料匯出
exp system/manager@TEST file=d:\daochu.dmp tables=(table1) query=\" where filed1 like '00%'\"
上面是常用的匯出,對於壓縮我不太在意,用winzip把dmp檔案可以很好的壓縮。
不過在上面命令後面 加上 compress=y 就可以了
資料的匯入
1 將D:\daochu.dmp 中的資料匯入 TEST資料庫中。
imp system/manager@TEST file=d:\daochu.dmp
上面可能有點問題,因為有的表已經存在,然後它就報錯,對該表就不進行匯入。
在後面加上 ignore=y 就可以了。
2 將d:\daochu.dmp中的表table1 匯入
imp system/manager@TEST file=d:\daochu.dmp tables=(table1)
匯入
基本上上面的匯入匯出夠用了。不少情況我是將表徹底刪除,然後匯入。