Oracle從備份組中抓出歸檔日誌方法
在實際環境中遇到這個問題,資料庫為歸檔狀態,但歸檔完畢後rman通過crontab自動備走歸檔日誌並刪除存在系統上的歸檔記錄檔。在RealSync程式停止一段時間後,需要應用歸檔日誌來解決日誌丟失問題。
問題是:
資料庫中的控制檔案中關於備份的中繼資料已經丟失,但備份組存在。這時候我們開始調用Oracle的一個內部非公開的函數包:dbms_backup_restore 來從備份組中抽取歸檔日誌到指定的系統目錄。以滿足我們的需求。
語句如下:
declare
devtype varchar2(256);
done boolean;
begin
devtype:=sys.dbms_backup_restore.deviceAllocate(type=>'',ident=>'t2');
sys.dbms_backup_restore.restoreSetArchivedLog(destination=>'/archivelog02');
sys.dbms_backup_restore.restoreArchivedLog(thread=>2,sequence=>51500);
sys.dbms_backup_restore.restoreBackupPiece(done=>done,handle=>'/backup/zlhis/rman/AL_ZLHIS_20141030_862336902_23768_1',params=>null);
sys.dbms_backup_restore.deviceDeallocate;
end;
注意我們修改的地方是:destination=>'/archivelog02指定恢複出來歸檔日誌的存放系統目錄位置,thread表示rac的thread號,sequence為需要恢複的那個歸檔記錄序號,handle表示備份組的絕對路徑。
修改完畢後,直接在sqlplus命令視窗執行即可。
在CentOS 6.4下安裝Oracle 11gR2(x64)
Oracle 11gR2 在VMWare虛擬機器中安裝步驟
Debian 下 安裝 Oracle 11g XE R2