實現目的:為避免資料丟失或錯誤,對資料庫資料的定時備份
實現方式:oracle匯出+windows 任務 完成
學習方法:Crowdsourced Security Testing其然,後知其所以然
實現過程:
1. 建立檔案 backup.bat (自訂檔案名稱.bat)
@echo off REM ########################################################### REM # Windows Server 2003下Oracle資料庫自動備份批處理指令碼 REM ########################################################### REM 取當前系統時間,可能因作業系統不同而取值不一樣 set CURDATE=%date:~0,4%%date:~5,2%%date:~8,2%set CURMON=%date:~0,4%%date:~5,2%set CURTIME=%time:~0,2%REM 小時數如果小於10,則在前面補0 if "%CURTIME%"==" 0" set CURTIME=00if "%CURTIME%"==" 1" set CURTIME=01if "%CURTIME%"==" 2" set CURTIME=02if "%CURTIME%"==" 3" set CURTIME=03if "%CURTIME%"==" 4" set CURTIME=04if "%CURTIME%"==" 5" set CURTIME=05if "%CURTIME%"==" 6" set CURTIME=06if "%CURTIME%"==" 7" set CURTIME=07if "%CURTIME%"==" 8" set CURTIME=08if "%CURTIME%"==" 9" set CURTIME=09set CURTIME=%CURTIME%%time:~3,2%%time:~6,2%REM 設定所有者、使用者名稱和密碼 set OWNER=orclset USER=bktcglset PASSWORD=bktcglREM 建立備份用目錄,目錄結構為oraclebak/YYYYMMDD/ if not exist "oraclebak" mkdir oraclebakcd oraclebakif not exist "%CURMON%" mkdir %CURMON%set FILENAME=%CURMON%/%OWNER%_%CURDATE%_%CURTIME%.DMP set EXPLOG=%CURMON%/%OWNER%_%CURDATE%_%CURTIME%_log.log REM 調用ORACLE的exp命令匯出使用者資料exp %USER%/%PASSWORD%@%OWNER% file=%FILENAME% log=%EXPLOG% owner=%USER% grants=n exit
註:
1.bat檔案可雙擊或直接在命令列執行,檢查正確與否
2.檢查時可注釋掉exit
3.以上檔案實現按月份建立檔案夾,按時間產生備份檔案
2.建立windows任務
步驟:
開始 -> 所有程式 -> 附件 -> 系統工具 -> 工作排程器 -> 操作 -> 建立基本任務 -> 任務名輸入"oracle_backup"(自訂任務名),執行這個任務選擇每天,下一步 -> 起始時間下午12:00,起始日期2012-7-11,下一步 ->(啟動程式)下一步 ->在 瀏覽 中尋找剛剛寫好的 backup.bat 檔案 >下一步 > 完成
註:
1.在任務計劃欄目下新增一個名為"oracle_backup"的任務計劃,表明已經配置完畢。
2.不同系統的任務計劃略有不同,但基本換湯不換藥,不做一一例舉
問題:系統警告"已建立新任務,但可能不能運行,因為無法設定賬戶資訊。指定的錯誤是:Ox80041315:工作排程器服務沒有運行"
原因:電腦的工作排程器服務沒有啟動起來。
解決:開始 > 所有程式 > 管理工具 > 服務,找到"Task Scheduler"服務,發現啟動類型為"已禁用",
按右鍵更改為"自動",並把它啟動起來,然後重新添加一次任務計劃就可以了。
3.簡單解釋
1. bat:是dos下的批次檔。批次檔是無格式的文字檔,它包含一條或多條命令。在命令提示下鍵入批次檔的名稱,或者雙擊該批次檔,系統就會調用 Cmd.exe按照該檔案中各個命令出現的順序來逐個運行它們。
2. Echo 命令:開啟回顯或關閉請求回顯功能,或顯示訊息。
3. @ 命令:表示不顯示@後面的命令
4. Rem 命令:注釋命令
5. If命令:if表示將判斷是否符合規定的條件,從而決定執行不同的命令。
6. exit :退出命令列
7. GRANTS: 是許可權的意思,在你匯出的目標資料庫中可能會有一些表的如select 許可權等賦給了別的使用者。
【GRANTS=Y】匯出的時候將這些許可權匯出,匯入的時候將這些許可權匯入。
【GRANTS=N】許可權不被匯入。