起因:源端數(shù)據(jù)庫應(yīng)用程序邏輯錯(cuò)誤,導(dǎo)致重大量重試回滾,日產(chǎn)生歸檔300GB,異地備份在10Mbps的網(wǎng)速下,產(chǎn)生了archive gap;
解決流程:
1 查出備庫當(dāng)前的scn號
網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)!專注于網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、微信小程序定制開發(fā)、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了靈武免費(fèi)建站歡迎大家使用!
select current_scn from v$database;
1612480746
2 在主庫生成基于備庫scn的增量備份
--primary
show all;
run{
ALLOCATE CHANNEL d1 TYPE disk;
set limit channel d1 kbytes=104857600;
BACKUP INCREMENTAL FROM SCN 1612480746 DATABASE FORMAT 'J:\%U_for_stb.bk' include current controlfile for standby;
}
3 傳送日志到備庫
--standby
catalog start with 'e:\inc';
4 應(yīng)用control file,增量備份集
restore standby controlfile to 'e:\control01.ctl' ;
shutdown immediate;
copy e:\control01.ctl E:\ORADATA\TCIS\CONTROL01.CTL
copy e:\control01.ctl E:\ORADATA\TCIS\CONTROL02.CTL
copy e:\control01.ctl E:\ORADATA\TCIS\CONTROL03.CTL
recover database noredo;
報(bào)錯(cuò):
RMAN-03002: recover 命令 (在 07/08/2018 10:49:09 上) 失敗
RMAN-06094: 數(shù)據(jù)文件5必須重新存儲(chǔ)
啟動(dòng)原先的備庫,select name from v$datafile
發(fā)現(xiàn)文件有重新rename的;有點(diǎn)梗;
5 修改數(shù)據(jù)文件位置
alter system set standby_file_management=manual;
alter database rename file 'E:\ORADATA\TCIS\UBSS_INDX01.DBF' to 'd:\oradata\tcis\ubss_indx01.dbf';
alter database rename file 'E:\ORADATA\TCIS\UBSS_INDX02.DBF' to 'd:\oradata\tcis\ubss_indx02.dbf';
6 再次recover database noredo
又報(bào)錯(cuò),第16號文件不存在
RMAN-03002: recover 命令 (在 07/08/2018 10:49:09 上) 失敗
RMAN-06094: 數(shù)據(jù)文件16必須重新存儲(chǔ)
以老的控制文件啟動(dòng),發(fā)現(xiàn)第16號文件是之后添加的
7 主庫上備份16號文件backup datafile 16 format 'j:\16.bak';
8 備庫上恢復(fù)16文件
--primary
catalog start with 'e:\inc';
restore datafile 16 ;
recover database noredo;
RMAN-03002: recover 命令 (在 07/07/2018 10:44:11 上) 失敗
ORA-19693: 已包括備份片段 E:\INC\CDT7BHIL_1_1_FOR_STB.BK
recover失敗,很名顯,這個(gè)16號文件是之后恢復(fù)的,其scn大于之前做的備份片集
9 清理無效的備份片,再次重復(fù)2之后的步驟,backup ,restore controlfile,rename datafile,recover database ;
10 恢復(fù)完成后檢查
復(fù)原參數(shù)alter system set standby_file_management=auto;
啟動(dòng)recoveralter database recover managed standby database disconnect;
檢查日志應(yīng)用情況
SQL> select status,blocks,process,sequence# from v$managed_standby;
STATUS BLOCKS PROCESS SEQUENCE#
------------ ---------- --------- ----------
CONNECTED 0 ARCH 0
CONNECTED 0 ARCH 0
CONNECTED 0 ARCH 0
CONNECTED 0 ARCH 0
IDLE 20480 RFS 45261
IDLE 20480 RFS 45262
IDLE 0 RFS 0
APPLYING_LOG 81560 MRP0 45248
檢查歸檔,刪除已應(yīng)用的歸檔
select a.thread#, a.sequence#, a.applied,a.name
from v$archived_log a, v$database d
where a.activation# = d.activation#
and a.applied='YES' order by 2;