ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

【DB笔试面试759】在Oracle中,如果主库丢失归档文件,那么物理DG如何恢复?

2021-04-15 23:03:34  阅读:228  来源: 互联网

标签:主库 SCN 备库 DG 759 CHANGE 备份 CHANNEL


watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

         题目         部分

在Oracle中,如果主库丢失归档文件,那么物理DG如何恢复?


     




         答案部分          


面试DBA岗位,面试官对于DG环境常常会问到,若是主库丢失了归档文件,而这些归档文件还未来得及传递到备库,则物理备库是否只能通过重建的方式来恢复呢?这道面试题是作者亲身经历,当时以为只能重建备库,但最后经过查找文档找到了解决办法,可以通过对主库进行基于SCN的增量备份来恢复物理DG。

全过程简单有如下几个步骤:

第一步,主库创建基于SCN的增量备份

首先要知道误删除或者丢失的归档日志是从哪个SCN开始的。视图V$ARCHIVED_LOG的FIRST_CHANGE#列能够查到归档日志对应的起始SCN。可以使用如下SQL查询最小的SCN:

1SELECT (SELECT MIN(D.CHECKPOINT_CHANGE#) FROM V$DATAFILE D) DATAFILE_SCN,
2       (SELECT MIN(D.CHECKPOINT_CHANGE#) FROM   V$DATAFILE_HEADER D WHERE  ROWNUM = 1) DATAFILE_HEADER_SCN,
3       (SELECT CURRENT_SCN FROM V$DATABASE) CURRENT_SCN,
4       (SELECT MIN(B.NEXT_CHANGE#) FROM   V$ARCHIVED_LOG B
5        WHERE  B.SEQUENCE# IN (968,644)--这里修改成丢失的归档号
6        AND  RESETLOGS_CHANGE# =(SELECT D.RESETLOGS_CHANGE# FROM V$DATABASE D)) NEXT_CHANGE#
7FROM   DUAL;
     

若最小的SCN为750983,则在主库上使用BACKUP ... INCREMENTAL FROM SCN为主库做一个增量备份,这个操作会将整个库中SCN大于750983的BLOCK全备份出来,SQL如下:

 1RUN { 
2ALLOCATE CHANNEL D1 TYPE DISK; 
3ALLOCATE CHANNEL D2 TYPE DISK; 
4ALLOCATE CHANNEL D3 TYPE DISK; 
5ALLOCATE CHANNEL D4 TYPE DISK; 
6BACKUP AS COMPRESSED BACKUPSET INCREMENTAL FROM SCN 750983 DATABASE FORMAT '/ARCHIVE/STANDBY_NEW_%D_%T_%U.BAK' INCLUDE CURRENT CONTROLFILE FOR STANDBY FILESPERSET=5  TAG 'FOR STANDBY NEW'; 
7RELEASE CHANNEL D1; 
8RELEASE CHANNEL D2; 
9RELEASE CHANNEL D3;
10RELEASE CHANNEL D4;
11}
12list backupset of controlfile;--找到控制文件的备份集文件名
     

第二步,将备份的文件复制到备库的空目录下

第三步,恢复备库的控制文件

在使用RMAN恢复备库的控制文件之前,需要将原来的控制文件进行手工的冷备并且记录下原来的控制文件中记录的数据文件的名称:

1SELECT ''''||NAME||''' ;' FROM V$DATAFILE; --记录备库数据文件原名称及路径
2startup force nomount
3cp +DATA/oranlhr/controlfile/control01.ctl +DATA/oranlhr/controlfile/control01.ctl_bk
4restore standby  controlfile from '/home/oracle/bak/standby_TESTDG_20180525_19t3q9sb_1_1.bak';
5select 'alter database rename file '''||NAME ||''' TO ' FROM V$datafile; --查询恢复控制文件后备库数据文件的名称
     

第四步,库执行RECOVER操作:

本文分享自微信公众号 - DB宝(lhrdba)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

标签:主库,SCN,备库,DG,759,CHANGE,备份,CHANNEL
来源: https://blog.51cto.com/lhrbest/2709646

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有