共計 1896 個字符,預計需要花費 5 分鐘才能閱讀完成。
本篇內容主要講解“怎么用 Java 程序調用 expdp 數據泵實現自動邏輯備份 Oracle 數據庫”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓丸趣 TV 小編來帶大家學習“怎么用 Java 程序調用 expdp 數據泵實現自動邏輯備份 Oracle 數據庫”吧!
下面描述完整的設計過程:1. 準備工作
(1)創建 directory 和操作系統目錄,配置 read,write 權限。
(2)檢查計劃備份數據的 Oracle 實例當前狀態為 read,write。
(3)手工備份 hr 用戶,測試 expdp 命令能否正常運行。我曾遇到 directory 為 NFS 文件系統,備份時提示錯誤。
(4)評估備份所需的空間,使用數據泵 expdp 的 estimate=statistics|blocks 和 estimate_only= y 參數對數據庫備份大小進行評估。
(5)檢查邏輯備份的存儲空間是否充足,可以執行命令 df - k 或 df - h 查看。
2. 程序設計
設計 Java 程序,部署在 Oracle 數據庫服務器的某一個節點下(可以部署在 Tomcat,Weblogic 等中間件里,也可以選擇獨立部署,開發人員按照規范自行開發),與服務器的 Oracle 用戶進行命令交互,發起 expdp 的備份命令。
這里解釋一下計時器 + 日志檢索 + 狀態查詢 + 消息中心的設計模式,每個功能的作用:
(1)狀態查詢
狀態查詢的功能是確定 expdp 是否還在運行,通過定時任務每幾秒查詢數據庫 sql,查看服務器進程等方式確認,這里時間間隔可以選擇 3 秒,5 秒等,短時間的偏差不會影響功能體驗。
① 程序調用 sql,查詢 expdp 發起時的 job 是否還在運行
② ps -ef | grep expdp |grep job_name 查看 Linux 系統進程是否存在
(2)日志檢索設計
在 expdp 命令執行完成之后,檢查導出日志中是否存在 ORA 字符,如果存在,意味著有報錯信息。
(注:如果想設計的更加智能,可以抓取 ORA 信息,調用 oerr 獲取報錯信息,通過消息中心發送給技術人員)
(3)計時器
計時器從程序向系統調用 expdp 命令時開始啟用,狀態查詢確認執行完畢后停止。如果出現超過 1 小時 expdp 進程還未停止,程序通過消息中心向技術人員發送告警信息。
(注:超時時間的閾值可以根據實際情況自行調整,30 分鐘,2 小時都行)
(4)消息中心
消息中心是一套獨立的消息發送程序,可選擇方案較多,這里列舉常用四種方案:
①較為簡單的就是向操作界面返回消息,顯示在頁面上;
②時效性比較低的可以選擇調用郵件服務器,向相關人員發送成功 / 失敗 / 告警郵件;
③時效性較高的是調用微信 /QQ 等互聯網通訊軟件的 API 接口向用戶推送消息;
④時效性最高的是通過移動、聯通、電信等運營商向用戶手機發送短信。
到這里,心中應該有一個程序方案的雛形了。
不過有一點需要注意一下,expdp 的命令最好設計成為可配置的,千萬不要硬編碼到程序中,不然程序的可拓展性、可維護性就大大降低。
3. 測試案例 / 場景的準備
為了能夠充分測試各種應用場景以及測試的便利性,這里做一些約定,同時設計一些測試場景 / 案例。
約定內容如下:
(1)新掛載一個 50M 的盤,directory 備份路徑指向該盤
(2)使用最簡單的界面操作返回消息。
測試場景 / 案例
(1)成功:備份 scott 用戶,expdp 很快完成備份,操作界面在 1 分鐘之內顯示備份成功消息。
(2)失敗:全備數據庫,備份會因為磁盤空間滿報錯,操作界面稍后會收到備份失敗消息。
(3)失敗:刪除備份 directory 目錄后,備份 scott 用戶,操作界面會收到備份失敗消息。
(4)失敗:在 expdp 備份數據庫的時候,kill 備份進程,操作界面會收到備份失敗消息。
(5)失敗:在 expdp 備份數據庫的時候,暫停 job,操作界面會收到備份失敗消息。
(6)告警:將計時器超時時間改為 1 分鐘,全備數據庫,操作界面在 1 分鐘之后收到告警消息。
如果讀者有興趣,可以自行開發微信的 API 推送消息,或者通過郵件服務器推送郵件消息。
如果要發送短信的話,需要和運營商簽訂協議,有條件的朋友,可以在公司的測試環境測試。
4. 程序調優 / 修復 BUG
經過多輪測試之后,可能會發現程序某些地方設計不合理,可能會發現程序未按照預期運行,也可能會發現程序有 BUG 報錯。
那么下一步,那就是程序調優和修復 BUG 的工作了,直到自己用著方便,業務用著舒服,開發用著滿意。加油吧~
到此,相信大家對“怎么用 Java 程序調用 expdp 數據泵實現自動邏輯備份 Oracle 數據庫”有了更深的了解,不妨來實際操作一番吧!這里是丸趣 TV 網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!