您好,登錄后才能下訂單哦!
利用SHELL腳本來驗證Oracle數據庫RMAN備份集的有效性
作者:趙全文 網名:guestart
我們生產環境的Oracle數據庫都做了RMAN備份,是采用了一周的RMAN備份保留策略;除了使用RMAN備份以外,我們還使用了愛數(Eisoo)備份軟件來進行備份,可以說是做到了有備無患。可是,如果有一天,Oracle數據庫由于主機層面硬件原因或是數據庫層面的原因不能對外提供高可用服務的時候,假設數據丟了一大部分,我們只有用RMAN備份來進行恢復,再如果發現,RMAN備份失效了,那就往地縫里鉆和哭暈在廁所都于事無補了。
為了防止這一幕的出現,就需要對Oracle數據庫RMAN備份集的有效性進行驗證。為此,我專門寫了一個SHELL腳本用來驗證RMAN備份集的有效性,將該腳本文件放在了crontab的計劃任務里,讓其在每天晚上21點自動運行,目的是驗證前一天生成的RMAN備份集的有效性。
現在,用線上的一套Oracle數據庫生產環境,來演示操作。
首先,查看最近的一次RMAN全備,如下圖所示,
接下來,查看一下生成的校驗RMAN備份集有效性的LOG文件,見下圖,
我們就以查看2017年3月3日生成的LOG文件為例,下面是執行SHELL腳本驗證的結果,見下圖所示,
截圖一,
我們發現,上面首先校驗的是3月2日生成的增量備份里的歸檔日志備份集,
截圖二,
緊接著,是校驗增量1級備份生成的備份集和最后手動歸檔以及備份的歸檔日志備份集,
截圖三,
由于在RMAN的參數設置中開啟了控制文件的自動備份功能,所以最后備份的是控制文件,那么最后校驗的也是控制文件了,嘿嘿!
俗話說的好,“工欲善其事,必先利其器”!最后著重介紹一下,rman_validate_v2.sh 這個驗證RMAN備份集有效性的SHELL腳本的具體內容,
由于腳本內容過多,下面分三個部分來說明,見圖1,
依次解釋一下,幾個紅色方框標注的地方,
(1)個人簡介,包括姓名,Emai郵箱,技術博客網址;
(2) SHELL腳本文件名;
(3) 最近修改日期;
(4)該SH腳本使用的注意事項,當然是先確保在測試環境上測試通過以后,在放到生產環境中使用啦。
見圖2,
圖2,有3個紅色方框,方框1是定義在腳本中要使用的SHELL外部命令所在的絕對路徑,每種Linux操作系統上所在的路徑有可能不同,盡量要使用“which 想要使用的命令名”來查找一下,然后寫到上面,通常把要使用的都要寫上去;方框2是定義了一些有關路徑的字符串變量和普通字符串變量以及SHELL命令用一對反引號(鍵盤上ESC鍵下面和數字1鍵左邊的那個鍵)括起來的字符串變量(注意:只有用反引號括起來才能生成SHELL命令的執行結果);方框3是使用SQLPLUS命令連接到Oracle數據庫以后,通過查詢視圖V$BACKUP_SET_DETAILS來找出前一天生成的RMAN備份集當中所有的BS_KEY值,然后保存到一個字符串變量BSKEY_LIST。
見圖3,
圖3有2個紅色方框需要特別說明,方框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循環來將字符串變量BSKEY_LIST的值一個一個讀出,然后執行一次validate backupset 6046 check logical;再取一個值,再執行一次validatebackupset 6047 check logical;直到都把字符變量BSKEY_LIST的值取完為止,那樣的話,就不用定義前面那個字符串變量BSKEY_LIST_WITH_COMMA了。看個人喜好,我覺得帶逗號這種方式,個人比較喜歡和推薦使用。
我把rman_validate_v2.sh這個腳本放在了GitHub上,網址為
https://github.com/guestart/rman_validate/blob/master/rman_validate_v2.sh,如果需要下載即可。
如您覺得此篇文章對您有幫助,歡迎關注微信公眾號:guestart的DBA學習筆記,您的支持是對我最大的鼓勵!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。