溫馨提示×

溫馨提示×

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

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

利用SHELL腳本來驗證Oracle數(shù)據(jù)庫RMAN備份集的有效性

發(fā)布時間:2020-06-29 10:10:53 來源:網(wǎng)絡(luò) 閱讀:653 作者:zhqw8315 欄目:數(shù)據(jù)庫

利用SHELL腳本來驗證Oracle數(shù)據(jù)庫RMAN備份集的有效性

作者:趙全文  網(wǎng)名:guestart

我們生產(chǎn)環(huán)境的Oracle數(shù)據(jù)庫都做了RMAN備份,是采用了一周的RMAN備份保留策略;除了使用RMAN備份以外,我們還使用了愛數(shù)(Eisoo)備份軟件來進行備份,可以說是做到了有備無患。可是,如果有一天,Oracle數(shù)據(jù)庫由于主機層面硬件原因或是數(shù)據(jù)庫層面的原因不能對外提供高可用服務(wù)的時候,假設(shè)數(shù)據(jù)丟了一大部分,我們只有用RMAN備份來進行恢復(fù),再如果發(fā)現(xiàn),RMAN備份失效了,那就往地縫里鉆和哭暈在廁所都于事無補了。

為了防止這一幕的出現(xiàn),就需要對Oracle數(shù)據(jù)庫RMAN備份集的有效性進行驗證。為此,我專門寫了一個SHELL腳本用來驗證RMAN備份集的有效性,將該腳本文件放在了crontab的計劃任務(wù)里,讓其在每天晚上21點自動運行,目的是驗證前一天生成的RMAN備份集的有效性。

現(xiàn)在,用線上的一套Oracle數(shù)據(jù)庫生產(chǎn)環(huán)境,來演示操作。

首先,查看最近的一次RMAN全備,如下圖所示,

利用SHELL腳本來驗證Oracle數(shù)據(jù)庫RMAN備份集的有效性

接下來,查看一下生成的校驗RMAN備份集有效性的LOG文件,見下圖,

利用SHELL腳本來驗證Oracle數(shù)據(jù)庫RMAN備份集的有效性

我們就以查看201733日生成的LOG文件為例,下面是執(zhí)行SHELL腳本驗證的結(jié)果,見下圖所示,

截圖一,

利用SHELL腳本來驗證Oracle數(shù)據(jù)庫RMAN備份集的有效性

我們發(fā)現(xiàn),上面首先校驗的是32日生成的增量備份里的歸檔日志備份集,

截圖二,

利用SHELL腳本來驗證Oracle數(shù)據(jù)庫RMAN備份集的有效性

緊接著,是校驗增量1級備份生成的備份集和最后手動歸檔以及備份的歸檔日志備份集,

截圖三,

利用SHELL腳本來驗證Oracle數(shù)據(jù)庫RMAN備份集的有效性

由于在RMAN的參數(shù)設(shè)置中開啟了控制文件的自動備份功能,所以最后備份的是控制文件,那么最后校驗的也是控制文件了,嘿嘿!

俗話說的好,“工欲善其事,必先利其器”!最后著重介紹一下,rman_validate_v2.sh 這個驗證RMAN備份集有效性的SHELL腳本的具體內(nèi)容,

由于腳本內(nèi)容過多,下面分三個部分來說明,見圖1,

利用SHELL腳本來驗證Oracle數(shù)據(jù)庫RMAN備份集的有效性

依次解釋一下,幾個紅色方框標注的地方,

      (1)個人簡介,包括姓名,Emai郵箱,技術(shù)博客網(wǎng)址;

      (2) SHELL腳本文件名;

      (3) 最近修改日期;

      (4)SH腳本使用的注意事項,當然是先確保在測試環(huán)境上測試通過以后,在放到生產(chǎn)環(huán)境中使用啦。

見圖2,

利用SHELL腳本來驗證Oracle數(shù)據(jù)庫RMAN備份集的有效性

2,有3紅色方框,方框1是定義在腳本中要使用的SHELL外部命令所在的絕對路徑,每種Linux操作系統(tǒng)上所在的路徑有可能不同,盡量要使用“which 想要使用的命令名”來查找一下,然后寫到上面,通常把要使用的都要寫上去;方框2是定義了一些有關(guān)路徑的字符串變量和普通字符串變量以及SHELL命令用一對反引號(鍵盤上ESC鍵下面和數(shù)字1鍵左邊的那個鍵)括起來的字符串變量(注意:只有用反引號括起來才能生成SHELL命令的執(zhí)行結(jié)果);方框3是使用SQLPLUS命令連接到Oracle數(shù)據(jù)庫以后,通過查詢視圖V$BACKUP_SET_DETAILS來找出前一天生成的RMAN備份集當中所有的BS_KEY值,然后保存到一個字符串變量BSKEY_LIST

見圖3,

利用SHELL腳本來驗證Oracle數(shù)據(jù)庫RMAN備份集的有效性

32紅色方框需要特別說明,方框1是通過強大AWK命令將字符串變量BSKEY_LIST的值“6046 6047 6048 6049 6050 6051 6052”的中間加一個逗號(所以我把方框1的字符串變量命名為BSKEY_LIST_WITH_COMMA,意即帶逗號的BSKEY_LIST),形如這種格式,“6046,6047,6048,6049,6050,6051,6052”;方框2是在最后進入RMAN命令行,校驗RMAN備份集有效性的語句,validate backupset 后面緊跟的就是帶逗號的BS_KEY值列表,形如這種格式,“validate backupset6046,6047,6048,6049,6050,6051,6052 check logical;”其實,也可以使用一個FOR環(huán)來將字符串變量BSKEY_LIST的值一個一個讀出,然后執(zhí)行一次validate backupset 6046 check logical;再取一個值,再執(zhí)行一次validatebackupset 6047 check logical;直到都把字符變量BSKEY_LIST的值取完為止,那樣的話,就不用定義前面那個字符串變量BSKEY_LIST_WITH_COMMA了??磦€人喜好,我覺得帶逗號這種方式,個人比較喜歡和推薦使用。

我把rman_validate_v2.sh這個腳本放在了GitHub上,網(wǎng)址為

https://github.com/guestart/rman_validate/blob/master/rman_validate_v2.sh,如果需要下載即可。




如您覺得此篇文章對您有幫助,歡迎關(guān)注微信公眾號:guestartDBA學(xué)習(xí)筆記,您的支持是對我最大的鼓勵!

利用SHELL腳本來驗證Oracle數(shù)據(jù)庫RMAN備份集的有效性

向AI問一下細節(jié)

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

AI