溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

怎么用Java程序調(diào)用expdp數(shù)據(jù)泵實現(xiàn)自動邏輯備份Oracle數(shù)據(jù)庫

發(fā)布時間:2021-08-30 17:35:03 來源:億速云 閱讀:177 作者:chen 欄目:關(guān)系型數(shù)據(jù)庫

本篇內(nèi)容主要講解“怎么用Java程序調(diào)用expdp數(shù)據(jù)泵實現(xiàn)自動邏輯備份Oracle數(shù)據(jù)庫”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“怎么用Java程序調(diào)用expdp數(shù)據(jù)泵實現(xiàn)自動邏輯備份Oracle數(shù)據(jù)庫”吧!

下面描述完整的設(shè)計過程:

1.準(zhǔn)備工作

(1)創(chuàng)建directory和操作系統(tǒng)目錄,配置read,write權(quán)限。

(2)檢查計劃備份數(shù)據(jù)的Oracle實例當(dāng)前狀態(tài)為read,write。

(3)手工備份hr用戶,測試expdp命令能否正常運行。我曾遇到directory為NFS文件系統(tǒng),備份時提示錯誤。

(4)評估備份所需的空間,使用數(shù)據(jù)泵expdp的estimate=statistics|blocks和estimate_only=y參數(shù)對數(shù)據(jù)庫備份大小進(jìn)行評估。

(5)檢查邏輯備份的存儲空間是否充足,可以執(zhí)行命令df -k或df -h查看。

2.程序設(shè)計

設(shè)計Java程序,部署在Oracle數(shù)據(jù)庫服務(wù)器的某一個節(jié)點下(可以部署在Tomcat,Weblogic等中間件里,也可以選擇獨立部署,開發(fā)人員按照規(guī)范自行開發(fā)),與服務(wù)器的Oracle用戶進(jìn)行命令交互,發(fā)起expdp的備份命令。

這里解釋一下計時器+日志檢索+狀態(tài)查詢+消息中心的設(shè)計模式,每個功能的作用:

(1)狀態(tài)查詢

狀態(tài)查詢的功能是確定expdp是否還在運行,通過定時任務(wù)每幾秒查詢數(shù)據(jù)庫sql,查看服務(wù)器進(jìn)程等方式確認(rèn),這里時間間隔可以選擇3秒,5秒等,短時間的偏差不會影響功能體驗。

① 程序調(diào)用sql,查詢expdp發(fā)起時的job是否還在運行

② ps -ef | grep expdp |grep job_name查看Linux系統(tǒng)進(jìn)程是否存在

(2)日志檢索設(shè)計

在expdp命令執(zhí)行完成之后,檢查導(dǎo)出日志中是否存在ORA字符,如果存在,意味著有報錯信息。

(注:如果想設(shè)計的更加智能,可以抓取ORA信息,調(diào)用oerr獲取報錯信息,通過消息中心發(fā)送給技術(shù)人員)

(3)計時器

計時器從程序向系統(tǒng)調(diào)用expdp命令時開始啟用,狀態(tài)查詢確認(rèn)執(zhí)行完畢后停止。如果出現(xiàn)超過1小時expdp進(jìn)程還未停止,程序通過消息中心向技術(shù)人員發(fā)送告警信息。

(注:超時時間的閾值可以根據(jù)實際情況自行調(diào)整,30分鐘,2小時都行)

(4)消息中心

消息中心是一套獨立的消息發(fā)送程序,可選擇方案較多,這里列舉常用四種方案:

①較為簡單的就是向操作界面返回消息,顯示在頁面上;

②時效性比較低的可以選擇調(diào)用郵件服務(wù)器,向相關(guān)人員發(fā)送成功/失敗/告警郵件;

③時效性較高的是調(diào)用微信/QQ等互聯(lián)網(wǎng)通訊軟件的API接口向用戶推送消息;

④時效性最高的是通過移動、聯(lián)通、電信等運營商向用戶手機(jī)發(fā)送短信。

到這里,心中應(yīng)該有一個程序方案的雛形了。

不過有一點需要注意一下,expdp的命令最好設(shè)計成為可配置的,千萬不要硬編碼到程序中,不然程序的可拓展性、可維護(hù)性就大大降低。

3.測試案例/場景的準(zhǔn)備

為了能夠充分測試各種應(yīng)用場景以及測試的便利性,這里做一些約定,同時設(shè)計一些測試場景/案例。

約定內(nèi)容如下:

(1)新掛載一個50M的盤,directory備份路徑指向該盤

(2)使用最簡單的界面操作返回消息。

測試場景/案例

(1)成功:備份scott用戶,expdp很快完成備份,操作界面在1分鐘之內(nèi)顯示備份成功消息。

(2)失?。喝珎鋽?shù)據(jù)庫,備份會因為磁盤空間滿報錯,操作界面稍后會收到備份失敗消息。

(3)失敗:刪除備份directory目錄后,備份scott用戶,操作界面會收到備份失敗消息。

(4)失?。涸趀xpdp備份數(shù)據(jù)庫的時候,kill備份進(jìn)程,操作界面會收到備份失敗消息。

(5)失?。涸趀xpdp備份數(shù)據(jù)庫的時候,暫停job,操作界面會收到備份失敗消息。

(6)告警:將計時器超時時間改為1分鐘,全備數(shù)據(jù)庫,操作界面在1分鐘之后收到告警消息。

如果讀者有興趣,可以自行開發(fā)微信的API推送消息,或者通過郵件服務(wù)器推送郵件消息。

如果要發(fā)送短信的話,需要和運營商簽訂協(xié)議,有條件的朋友,可以在公司的測試環(huán)境測試。

4.程序調(diào)優(yōu)/修復(fù)BUG

經(jīng)過多輪測試之后,可能會發(fā)現(xiàn)程序某些地方設(shè)計不合理,可能會發(fā)現(xiàn)程序未按照預(yù)期運行,也可能會發(fā)現(xiàn)程序有BUG報錯。

那么下一步,那就是程序調(diào)優(yōu)和修復(fù)BUG的工作了,直到自己用著方便,業(yè)務(wù)用著舒服 ,開發(fā)用著滿意。加油吧~

到此,相信大家對“怎么用Java程序調(diào)用expdp數(shù)據(jù)泵實現(xiàn)自動邏輯備份Oracle數(shù)據(jù)庫”有了更深的了解,不妨來實際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI