ADG增量恢復手冊


一、確認情況:

1、mrp進程等待gap

 

 

 

 

 

2、確認日志應用情況:

 

select thread#,first_time,SEQUENCE#,block_size*blocks/1024/1024,archived,applied,statu

from v$archived_log where first_time>sysdate-10 order by 2

 

 

 

 

 

3、確認gap:

 

 

 

確認產生了gap,且在源端確認,確實的歸檔已經不存在,且nub沒有備份。

 

基於如上結論得知歸檔產生了gap,備端db需要恢復

 

 

二、進行恢復

1、 備份數據文件信息:

col name for a70

set lines 200 pages 200

Select file#,name from v$datafile;

 

主庫

 

 

 

備庫

 

 

 

 

2、 備份standby db 當前控制文件

SQL> alter database backup controlfile to '/tmp/control.bak20200813';

 

 

3、 獲取備庫最后的scn,以下面最小的scn

col current_scn format 99999999999999999

select current_scn from v$database;SQL>

 

CURRENT_SCN

------------------

226206611

 

SQL> Select min(fhscn) from x$kcvfh;

 

MIN(FHSCN)

--------------------

226206612

 

 

 

4、 確認主庫是否添加新的數據文件

 

set linesize 300

col name for a70

select file#,name from v$datafile where creation_change#>=226206611;SQL> SQL>

 

     FILE# NAME

---------- ----------------------------------------------------------------------

26 +DATA1DG/ORAxxxxAGR/DATAFILE/xxxxtbs.311.1048346417

 

 

 

5、主庫基於scn備份,並傳輸到備庫1節點:

 

rman target /

run{

allocate channel c1 device type disk;

allocate channel c2 device type disk;

allocate channel c3 device type disk;

allocate channel c4 device type disk;

backup as  compressed backupset INCREMENTAL FROM SCN 226206611 database format '/oracle/backup/db_inc_%U.bak';

backup current controlfile for standby format '/oracle/backup/standby_controlfile.ctl';

release channel c1;

release channel c2;

release channel c3;

release channel c4;

}

 

cd /oracle/backup

scp * 22.XX.XX.99:/nocopy/oracle_backup/backup

 

 

 

 

 

400G的主庫備份出來只有不到100M

(增量全備雖然量比較小但是也要將所有數據文件都掃描一遍所以如果主庫較大會占用較多的物理IO,且速度不會太快)

 

6、關閉備庫2節點。

 

7、備庫1節點停止mrp,更改standby_file_managementmanual,啟動到no

mount狀態:

 

alter database recover managed standby database cancel;

alter system set standby_file_management=manual;

shutdown immediate;

startup nomount;

 

 

8、備庫1節點恢復控制文件並注冊備份集:

 

rman target /

 

restore standby controlfile from '/nocopy/oracle_backup/backup/standby_controlfile.ctl';

 

alter database mount;

 

catalog start with '/nocopy/oracle_backup/backup';

 

 

 

 

 

 

 

9、使用增量備份恢復備庫與主庫差別的數據文件(主庫未新建文件可跳過):

 

run

{

allocate channel c0 type disk;

set newname for datafile 26 to '+DATA1DG';

restore datafile 26;

release channel c0;

}

 

10、向新控制文件中注冊datafile

在使用omf時,重建備庫控制文件之后,記錄的數據文件路徑和名字會變為  MUST_RENAME_THIS_DATAFILE,此時無法使用alter database rename file 'AAAA' to 'BBBB';   無論將AAAA寫成源端的數據文件路徑,還是當前備庫轉換的數據文件路徑,都不會識別會報ORA-01516。需要將備庫的數據文件路徑,catalog進控制文件,注冊所有數據文件,並進行switch to copy操作

 

查看當前控制文件中記錄的datafile信息:

 

 

 

 

(當前控制文件中顯示的路徑為MUST_RENAME_THIS_DATAFILE,且alert中報錯)

 

向新控制文件中注冊datafile:

catalog start with '+DATA1DG/ORAIPPSAGRS/DATAFILE';

 

 

 

 

 

 

進行switch:

Switch database to copy;

 

 

 

 

 

 

 

11、恢復數據庫:

 

recover database noredo;

 

 

12、重新格式化所有log:

(1)查看log file

 

Select * from v$logfile order by 1;

 

 

 

 

(2)格式化所有online log(格式化時會重新創建日志文件,因此你會發現磁盤組中的日志文件變多了,原來的不需要,直接rm掉即可):

 

 

 

 

 

Alter database clear logfile group 1;

Alter database clear logfile group 2;

Alter database clear logfile group 3;

Alter database clear logfile group 4;

Alter database clear logfile group 5;

Alter database clear logfile group 6;

 

 

(3) 格式化所有standby log

 

Alter database clear logfile group 7;

Alter database clear logfile group 8;

Alter database clear logfile group 9;

Alter database clear logfile group 10;

Alter database clear logfile group 11;

Alter database clear logfile group 12;

Alter database clear logfile group 13;

Alter database clear logfile group 14;

 

(4)再次查看log file

 

 

 

 

13、啟動mrp

 

alter database recover managed standby database using current logfile disconnect from session; 

 

14、檢查ADG狀態:

SELECT thread#,PROCESS,PID,CLIENT_PROCESS, SEQUENCE#, block#,STATUS FROM V$MANAGED_STANDBY order by 1;

 

select thread#,first_time,SEQUENCE#,block_size*blocks/1024/1024,archived,applied,status from v$archived_log where first_time>sysdate-1 order by 2

 

select * from v$dataguard_stats;

 

 

15lag日志追平以后,更改standby_file_managementauto

 

alter system set standby_file_management=AUTO;

 

 

 

16、停掉1節點mrp啟動備庫1節點和2節點到open,再在1節點啟動mrp

 

17最后一次檢查數據庫和ADG同步狀態:

 

select database_role,protection_mode,protection_level from v$database;

 

set linesize 300
col dest_name for a30
col database_mode for a30
select dest_id,dest_name,DATABASE_MODE,PROTECTION_MODE,recovery_mode from v$archive_dest_status;

 

SELECT thread#,PROCESS,PID,CLIENT_PROCESS, SEQUENCE#, block#,STATUS FROM V$MANAGED_STANDBY order by 1;

 

select thread#,first_time,SEQUENCE#,block_size*blocks/1024/1024,archived,applied,status from v$archived_log where first_time>sysdate-1 order by 2;

 

select * from v$dataguard_stats;

 

 

至此所有恢復工作完成


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM