Dataguard備機的差異備份還原

數據庫服務器,主備之間dataguard,主服務器每天另外做全備份,全備份完成的同時刪除掉備份成功的歸檔日誌,結果因爲備份磁盤的空間不足,就刪除了除當天的所有備份,想想也沒有什麼,反正都有最新的全備,但沒有想到了是dataguard裏面的備機上面缺日誌,日子應用不成功了。
還原完整備份太麻煩,就採用差異備份方式。
1.找出備份機器最後一個檢查點;
SQL> select name,file#,checkpoint_change# from v$datafile order by checkpoint_change#;
     FILE# CHECKPOINT_CHANGE#
---------- ------------------
/u01/app/oracle/oradata/dbdatabase/system01.dbf     1        104990427

2.在主機上做這個檢查點後差異備份
RMAN> run   
2> {
3> allocate channel c1 device type disk;
4> backup as compressed backupset incremental from scn 104990427 database format '/u01/nasbackup/%U';
5> release channel c1;
6> }

using target database control file instead of recovery catalog
allocated channel: c1
channel c1: SID=578 device type=DISK
...............
piece handle=/u01/nasbackup/d8uj8tkd_1_1 tag=TAG20191212T193312 comment=NONE
channel c1: backup set complete, elapsed time: 00:00:01
Finished backup at 12-DEC-19

released channel: c1

RMAN> exit

3.將主機的差異備份拷貝到備機
oracle@suse12sp3:/u01/nasbackup> scp d* 10.0.0.225:/nasbackup
..........
Password: 

4.在備機上還原控制文件
RMAN> shutdown immediate;
RMAN> startup nomount;
RMAN> restore standby controlfile from '/u01/nasbackup/d8uj8tkd_1_1';

Starting restore at 12-DEC-19
using channel ORA_DISK_1
channel ORA_DISK_1: restoring control file
channel ORA_DISK_1: restore complete, elapsed time: 00:00:03
output file name=/u01/app/oracle/oradata/dbdatabase/control01.ctl
output file name=/u01/app/oracle/oradata/dbdatabase/control02.ctl
Finished restore at 12-DEC-19

5.備機切換到mount模式
RMAN> alter database mount standby database;
RMAN> catalog start with '/u01/nasbackup';
searching for all files that match the pattern /u01/nasbackup
........

Do you really want to catalog the above files (enter YES or NO)? yes
cataloging files...
cataloging done

List of Cataloged Files
=======================
File Name: /u01/nasbackup/d8uj8tkd_1_1
.........

6.還原差異備份數據
RMAN> recover database;
結果失敗,提示14號數據文件需要恢復。

RMAN> restore database;
Starting restore at 12-DEC-19
using channel ORA_DISK_1

channel ORA_DISK_1: starting datafile backup set restore
channel ORA_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_DISK_1: restoring datafile 00014 to /u01/app/oracle/oradata/dbdatabase/system04.dbf
channel ORA_DISK_1: reading from backup piece /u01/nasbackup/d7uj8t7o_1_1

channel ORA_DISK_1: starting datafile backup set restore
channel ORA_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_DISK_1: restoring datafile 00014 to /u01/app/oracle/oradata/dbdatabase/system04.dbf
channel ORA_DISK_1: reading from backup piece /u01/nasbackup/d7uj8t7o_1_1
channel ORA_DISK_1: errors found reading piece handle=/u01/nasbackup/d7uj8t7o_1_1
channel ORA_DISK_1: failover to piece handle=/u01/nasbackup/d7uj8t7o_1_1_1 tag=TAG20191212T193312
channel ORA_DISK_1: restored backup piece 1
channel ORA_DISK_1: restore complete, elapsed time: 00:03:45
failover to previous backup
接下來繼續還原差異備份。
RMAN> restore database;
完成。

7.重啓並切換到standby模式應用新的歸檔日誌
SQL> shutdown immediate;
SQL> startup nomount;
SQL> alter database mount standby database;
SQL> alter database recover managed standby database using current logfile disconnect from session;
日誌可以正常應用了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章