天天看點

Oracle 在window下自動備份

1、确定你的計算機上裝有oracle的用戶端,如果沒有,請安裝oracle用戶端

2、确定有你的oracle服務裡有你要需要備份的資料庫的服務名。

3、制作一個批處理檔案(oracleBackup.bat),具體方法:打開“記事本”,儲存為oracleBackup.bat,

  此時儲存的檔案類型選擇為“所有檔案”。我的儲存目錄為:d:/oracleBackup.bat。oracle用戶端安裝

  在d:/oracle目錄下。

4、右鍵點選此檔案(oracleBackup.bat),選擇“編輯”,進入編輯狀态:

     D:

del /q /業務資料備份/gymz/backup/day3

copy /業務資料備份/gzdb/backup/day2/*.*  /業務資料備份/gymz/backup/day3

del /q /業務資料備份/gymz/backup/day2

copy /業務資料備份/gymz/backup/day1/*.*  /業務資料備份/gymz/backup/day2

del /q /業務資料備份/gymz/backup/day1                    

copy /業務資料備份/gymz/backup/day0/*.*  /業務資料備份/gymz/backup/day1

del /q /業務資料備份/gymz/backup/day0

exp gymz/[email protected] log=gymz_exp%DATE:~4,10%.log file=/業務資料備份/gymz/backup/day0/gymz_backup%DATE:~4,10%.dmp owner=gymz

  a、cd oracle/ora92/bin        //進入exp指令的目錄下面。

  b、exp gymz/[email protected] file=d:/%DATE:~4,10%.dmp log=d:/%DATE:~4,10%.log

          //%DATE:~4,10%代表取系統日期(windows系統doc指令),例如:2005-12-01。用日期來

   作為備份的資料檔案名和日志名,用來保證檔案名不重複。以上備份檔案我儲存在d:下面,儲存

   目錄自己設定。

  c、儲存檔案。

5、在windows計劃任務(開始-程式-附件-系統工具-任務計劃)中添加任務計劃,選擇“任務計

  劃”時,點選“浏覽”,選擇自己的計劃(即oracleBackup.bat檔案),确定就行了。以下設定根據自

  需要設定就行了。

   建立方式(二):在cmd 中運作建立計劃  at 12:47 /every:W D:/業務資料備份/gymz/backup/backup.cmd (在每個星期三的12:   47定時執行)

              取消已經安排的計劃  指令:at 1 /Delete (1為指派給已計劃指令的辨別編号)

Oracle資料庫定時自動備份批處理代碼(Windows)

    這是最近寫的一個Oracle資料庫自動備份的批處理,經過測試正常運作,記錄如下。包括兩部分,邏輯備份和冷備份,如有不完整之處,還往看到本文的高手指導!

注:這些内容是本人經過一番學習和多次測試調試後的結果,如果想轉載,請以連接配接的形式,謝謝合作!

第一部分,邏輯備份

  • 下面是:AutoBackup_Logic.bat --邏輯備份的主檔案,直接在計劃任務中調用就可以了。

@echo off

rem

rem 需要配置的參數說明:

rem BAT_HOME:即本批處理所在的目錄;

rem DUMP_DIR:即要備份到的資料檔案目錄,存在與資料字典表:dba_directories 中。

rem

set BAT_HOME=E:/BAT

set DUMP_DIR=E:/Temp/DBBackup

set BKFILE=%Date:~0,4%%Date:~5,2%%Date:~8,2%

set HHMMSS=%time:~0,2%%time:~3,2%%time:~6,2%

call %BAT_HOME%/LogicBackup.bat %DUMP_DIR% >%BAT_HOME%/LogicBackup_%BKFILE%%HHMMSS%.log

echo Completed!

  • 下面是:LogicBackup.bat

@echo off

rem call LogicBackup.bat %DUMP_DIR%

rem ==========================================================================================

rem     本批處理實作支援expdp資料泵的Oracle資料庫版本的資料庫邏輯備份,流程為:導出資料到

rem dump_dir 資料庫目錄下,然後把dmp檔案以rar格式放入當天備份日期命名的目錄下,便于以後按

rem 照日期恢複。

rem

rem 需要配置的參數說明:

rem BAT_HOME:即本批處理所在的目錄;

rem BKDIR:是調用本批處理時傳進來的參數 dump_dir,即要備份到的資料檔案目錄。

rem

rem Author: Sanlavo

rem Time: 2007-06-07

rem ==========================================================================================

rem

echo 備份開始...

echo 目前的時間是: %DATE% %time%

set BAT_HOME=E:/BAT

set BKDIR=%1

set BKFILE=%Date:~0,4%%Date:~5,2%%Date:~8,2%

set HHMMSS=%time:~0,2%%time:~3,2%%time:~6,2%

expdp system/sys parfile=%BAT_HOME%/ScriptsLib/parfiletest.sql

if not exist %BKDIR%/%BKFILE%_LOGIC (

md %BKDIR%/%BKFILE%_LOGIC

) else (

echo 目錄 %BKDIR%/%BKFILE%_LOGIC 已經存在

)

echo 開始壓縮檔案...

rar a %BKDIR%/%BKFILE%_LOGIC/%BKFILE%%HHMMSS%_LOGIC_FULL.rar %BKDIR%/*.dmp

echo 壓縮檔案 %BKFILE%%HHMMSS%_LOGIC_FULL.rar 完成

echo 開始移動檔案...

move %BKDIR%/*.dmp %BKDIR%/%BKFILE%_LOGIC/

move %BKDIR%/*.log %BKDIR%/%BKFILE%_LOGIC/

echo 移動檔案完成

echo 開始删除dmp檔案...

del /f /s /q %BKDIR%/%BKFILE%_LOGIC/*.dmp

echo 删除dmp檔案完成

net send %userdomain% "資料庫邏輯備份已于:%DATE% %time% 完成!"

echo .

echo 備份已于:%DATE% %time% 完成!

echo .

rem 移動批處理的日志檔案到備份目錄下面

xcopy %BAT_HOME%/LogicBackup_%BKFILE%*.log %BKDIR%/%BKFILE%_LOGIC/

echo Successfully Completed!

  • 下面是expdp的parfile參數的檔案(parfiletest.sql)内容:

directory=dump_dir

dumpfile=DBBackup_Logic_%U.dmp

logfile=DBBackup_Logic.log

filesize=80M

full=y

job_name=EXP_DB_FULL

到此,邏輯備份批處理完成,可以用指令來定時執行,例如:

c:/>at 06:06 /every:S E:/BAT/AutoBackup_Logic.bat

這樣,邏輯備份将會在每周星期六淩晨六點六分執行。

第二部分,冷備份:

  • 下面是:AutoBackup.bat --主檔案

@echo off

set BAT_HOME=E:/BAT

set DUMP_DIR=E:/Temp/DBBackup

call ColdBackup.bat orcl %DUMP_DIR% >%BAT_HOME%/ColdBackup_%DATE:~0,10%.log

pause

  • 下面是備份流程檔案:ColdBackup.bat

@echo off

rem E:/BAT>ColdBackup.bat orcl E:/Temp/DBBackup

rem

rem==============================================

rem 要備份的檔案清單有:參數檔案、控制檔案、資料檔案、重做日志檔案

rem

rem 參數檔案有:

rem %ORACLE_HOME%/database/spfile<sid>.ora

rem %ORACLE_HOME%/database/PWD<sid>.ora

rem %ORACLE_HOME%/database/pfile<sid>.ora

rem

rem 控制檔案:可以通過查詢資料字典視圖v$control 确認控制檔案的位置和清單

rem select status,name from v$controlfile;

rem

rem 資料檔案:可以通過查詢資料字典視圖 dba_data_files 确定資料檔案的位置和清單

rem select status,file_name from dba_data_files;

rem

rem 重做日志檔案:查詢資料字典v$logfile可以确認聯機重做日志檔案的位置和清單

rem select group#,status,member from v$logfile;

rem Author: Sanlavo

rem Time: 11:35 2007-5-31

rem==============================================

rem

rem 請在這裡配置好本批處理程式所放的路徑BAT_HOME以及ORACLE_HOME:

set ORACLE_HOME=D:/oracle/product/10.2.0/db_1

set BAT_HOME=E:/BAT

set BKFILE=%Date:~0,4%%Date:~5,2%%Date:~8,2%

set HHMMSS=%time:~0,2%%time:~3,2%%time:~6,2%

rem 資料庫脫機

call %BAT_HOME%/ShutdownDB.bat %1

rem %1 為資料庫<SID> %2為備份檔案路徑

rem 建立備份目錄

if exist %2/%BKFILE%_DBBackup (

echo %2/%BKFILE%_DBBackup 已經存在

) else (

mkdir %2/%BKFILE%_DBBackup

echo %2/%BKFILE%_DBBackup 已經建立

)

rem copy備份檔案到備份目錄中

rem call xcopyfiles.bat %1 %2

rem begin ==============================================

echo 資料庫 %1 冷備份開始...

rem 備份 dbs 目錄下參數檔案

xcopy %ORACLE_HOME%/dbs/*.* %2/%BKFILE%_DBBackup/dbs /S /I /C /Y /F

rem 備份 %ORACLE_HOME%/database 目錄下參數檔案

xcopy %ORACLE_HOME%/database/*.* %2/%BKFILE%_DBBackup/database /S /I /C /Y /EXCLUDE:ScriptsLib/databaseExclude.lst /F

rem 備份資料庫控制檔案、資料檔案、重做日志檔案

rem 建立資料庫<SID>命名的檔案夾,存放相關檔案

if not exist %2/%BKFILE%_DBBackup/%1 (

md %2/%BKFILE%_DBBackup/%1

)

rem 從filepath.txt中讀取檔案路徑資訊并copy到目标路徑

for /f %%i in (%BAT_HOME%/ScriptsLib/filepath.txt)  do (

xcopy %%i %2/%BKFILE%_DBBackup/%1 /S /I /C /Y /F

)

echo 資料庫 %1 冷備份完成!

rem end ==============================================

echo 啟動資料庫

rem 上面的操作過程中以及修改了環境路徑,是以掉不到該批處理檔案

%BAT_HOME:~0,2%

cd %BAT_HOME%

call %BAT_HOME%/StartupDB.bat %1

:Operation

:End

rem if exist *.dmp (

rem move *.dmp %BKFILE%_DBBackup & goto End1

rem echo Move dump file successfull

rem )else (

rem echo 不存在資料庫備份檔案 & goto End1

rem )

rem End

rem :: 把日期目錄下的檔案移動到目前目錄

rem :: move %BKFILE%_DBBackup/*.bat

rem :End1

rem echo *

rem echo Operation Successfully

rem echo *

pause

  • 上文中的:databaseExclude.lst 内容如下:

.log

.exe

即,排除日志檔案和exe檔案,其他的全部備份。

  • 上文中的:filepath.txt

内容是經過資料字典查詢後得到的比如控制檔案、資料檔案、日志檔案等的路徑清單,例如:

D:/ORACLE/PRODUCT/10.2.0/ORADATA/ORCL/CONTROL01.CTL

D:/ORACLE/PRODUCT/10.2.0/ORADATA/ORCL/CONTROL02.CTL

D:/ORACLE/PRODUCT/10.2.0/ORADATA/ORCL/CONTROL03.CTL

D:/ORACLE/PRODUCT/10.2.0/ORADATA/ORCL/USERS01.DBF

D:/ORACLE/PRODUCT/10.2.0/ORADATA/ORCL/SYSAUX01.DBF

D:/ORACLE/PRODUCT/10.2.0/ORADATA/ORCL/UNDOTBS01.DBF

D:/ORACLE/PRODUCT/10.2.0/ORADATA/ORCL/SYSTEM01.DBF

D:/ORACLE/PRODUCT/10.2.0/ORADATA/ORCL/EXAMPLE01.DBF

D:/SDEDB.DBF

E:/SDEDB/SDE_DATA01.DBF

E:/SDEDB/SDE_INDEX01.DBF

D:/ORACLE/PRODUCT/10.2.0/ORADATA/ORCL/WJ01.DBF

D:/ORACLE/PRODUCT/10.2.0/ORADATA/ORCL/REDO01.LOG

D:/ORACLE/PRODUCT/10.2.0/ORADATA/ORCL/REDO02.LOG

D:/ORACLE/PRODUCT/10.2.0/ORADATA/ORCL/REDO03.LOG

...

在冷備份中涉及到資料庫的關閉和啟動,這裡不在羅索了。關于冷備份的執行,也可以模仿邏輯備份部分,在計劃任務中調用。

(完)