簡單的oracle備份恢複批次檔

來源:互聯網
上載者:User

標籤:

 建議一:

  利用任務計劃、批次檔和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/[email protected] 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/[email protected] < C:\RMAN.TXT

  建議五:

  在文本裡編輯cmd命令。然後儲存成bat檔案。在windows中定義任務計劃,就

  可以自動執行了。

  例:

  編輯文字檔

  del c:\exp\*.dmp

  exp userid=cw/[email protected] 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/[email protected] file=d:\daochu.dmp full=y

  2 將資料庫中system使用者與sys使用者的表匯出

  exp system/[email protected] file=d:\daochu.dmp owner=(system,sys)

  3 將資料庫中的表table1 、table2匯出

  exp system/[email protected] file=d:\daochu.dmp tables=(table1,table2)

  4 將資料庫中的表table1中的欄位filed1以"00"打頭的資料匯出

  exp system/[email protected] file=d:\daochu.dmp tables=(table1) query=\" where filed1 like ‘00%‘\"

  上面是常用的匯出,對於壓縮我不太在意,用winzip把dmp檔案可以很好的壓縮。

  不過在上面命令後面 加上 compress=y 就可以了

  資料的匯入

  1 將D:\daochu.dmp 中的資料匯入 TEST資料庫中。

  imp system/[email protected] file=d:\daochu.dmp

  上面可能有點問題,因為有的表已經存在,然後它就報錯,對該表就不進行匯入。

  在後面加上 ignore=y 就可以了。

  2 將d:\daochu.dmp中的表table1 匯入

  imp system/[email protected] file=d:\daochu.dmp tables=(table1)

  匯入

  基本上上面的匯入匯出夠用了。不少情況我是將表徹底刪除,然後匯入

簡單的oracle備份恢複批次檔

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.