诊断和响应故障_执行块介质恢复(Block Media Recovery)

news2024/11/24 22:37:55

本章阐述如何还原和恢复数据文件中个别的数据块。

1.块介质恢复概述

块介质恢复通过恢复损坏的数据块提供更短的平均恢复时间(MTTR)。

1.1.块介质恢复的目的

使用块介质恢复来恢复数据文件中一个或多个损坏的数据块。

块介质恢复相比数据文件介质恢复提供以下优势:
1)降低平均恢复时间因为只有需要恢复的数据块被还原和恢复
2)在恢复过程中让受影响的数据文件保持联机

没有块介质恢复的话,即使一个块损坏,也必须将数据文件脱机和还原数据文件的备份,在备份还原后,必须应用所有为数据文件产生的redo。整个文件不可用直到介质恢复完成。使用块介质恢复,则只有实际被恢复的块在恢复过程中不可用。

块介质恢复对于涉及少的已知数量的块的物理损坏问题是最有用的。块级别的数据丢失通常是由于间歇的随机的不会导致大范围的数据丢失的I/O错误和写到磁盘的内存损坏造成。块介质恢复不能用于数据丢失的范围或损坏是未知的和整个数据文件需要恢复的情况。在这些情况中,数据文件介质恢复是最佳解决方案。


1.2.块介质恢复的基本概念

通常,当第一次遭遇损坏时,数据库作为介质损坏标记块和将它写到磁盘。接下来对块的读取都是不成功的直到块被恢复为止。可以只对标记为损坏或损坏检查失败的块执行介质恢复。

典型地,块损坏报告在以下位置:
1)命令LIST FAILURE,VALIDATE或BACKUP … VALIDATE的结果
2)视图V$DATABASE_BLOCK_CORRUPTION
3)标准输出中的错误信息
4)alert日志
5)用户跟踪文件
6)SQL命令ANALYZE TABLE和ANALYZE INDEX的结果
7)DBVERIFY工具的结果
8)第三方介质管理输出

例如,你可能在用户跟踪文件中发现以下信息:

ORA-01578: ORACLE data block corrupted (file # 7, block # 3)
ORA-01110: data file 7: '/oracle/oradata/trgt/tools01.dbf'
ORA-01578: ORACLE data block corrupted (file # 2, block # 235)
ORA-01110: data file 2: '/oracle/oradata/trgt/undotbs01.dbf

1.2.1.关于介质恢复和备数据库

块介质恢复的行为取决于数据块损坏是在主数据库还是物理备数据库上被发现。

如果损坏发生的数据库是与一个实时查询的物理备数据库相关联,那么数据库自动尝试执行块介质恢复。主数据库在备数据库上搜索块的好的副本,如果找到的话,修复块而对遭遇损坏块的查询没有影响。只有如果数据库不能修复损坏时,才会显示Oracle数据库物理块损坏消息(ORA-1578)。

不管何时块损坏被自动检测到,可以使用RECOVER … BLOCK命令手动执行块介质恢复。缺省情况下,RMAN首先搜索实时查询物理备数据库中的好块,然后是闪回日志,最后是在完全或级别0的增量备份中的块。

注:为了让介质恢复自动运行,物理备数据库必须运行在实时查询模式中。需要购买Oracle Active Data Guard授权。

如果损坏的数据块是在实时查询物理备数据库上被发现,数据库尝试从主数据库上获取块的副本来修复损坏。修复在后台执行,如果修复是成功的会让接下来的查询成功。如果在备数据库上配置了以下数据库初始化参数,那么数据库会自动尝试块修复:
1)配置LOG_ARCHIVE_CONFIG参数为DG_CONFIG列表和使用DB_UNIQUE_NAME属性配置一个LOG_ARCHIVE_DEST_n参数为主数据库

2)配置了FAL_SERVER参数,它的值包含主数据库的Oracle网络服务名称

注:如果在验证过程中检测到的损坏块,比如RMAN的VALIDATE命令,那么恢复不会自动发起。


1.2.2.关于鉴别损坏块

视图V$DATABASE_BLOCK_CORRUPTION显示被数据库组件比如RMAN,ANALYZE和SQL查询标记为损坏的块。

以下损坏类型导致增加行到这个视图:
1)物理损坏(有时称为介质损坏)
数据库不能识别块:校验和是无效的,块包含的全是0或块头是损坏的。

缺省情况下物理损坏检查是启用的。可以通过指定BACKUP命令的NOCHECKSUM选项关闭校验和检查,但其它物理一致性检查,比如块头和块脚检查不能被禁用。

2)逻辑损坏
块有有效的校验和,头和尾都匹配,等等,但内容是逻辑不一致的。块介质恢复可能不能修复所有的逻辑块损坏。在这些情况中,候补的修复方法,比如表空间时间点恢复,或删除和重建受影响的对象可以修复这个损坏。

缺省情况下逻辑损坏块检查是禁用的。可以通过指定命令BACKUP,RESTORE,RECOVER和VALIDATE的CHECK LOGICAL选项来打开它。

数据库可以通过验证块和段之间的关系来检测某些损坏,但不能通过检查个别的块来检测到它们。视图V$DATABASE_BLOCK_CORRUPTION不会记录这个粒度级别的损坏。


1.2.3.关于块介质恢复过程中缺失Redo

块介质恢复只需要要恢复的块的一组完整的redo更改。这个与需要从恢复开始到结束的一序列完整的redo更改的数据文件恢复不同。

像数据文件介质恢复一样,块介质恢复一般不能通过缺失或不可访问的归档日志,虽然当查找归档redo日志文件的可用副本时会尝试还原切换(restore failover)。因此,块介质恢复不能通过会导致校验和失败的物理redo损坏。然而,块介质恢复可以通过redo流中的缺口如果缺失或损坏的redo记录不会影响要恢复的块。

注:在块介质恢复的过程中每个块是独立恢复的,所以恢复块的子集可能会成功。

当RMAN在块介质恢复过程中首次检测到缺失或损坏的redo记录时,它不会立即报错,因为在经历恢复的块可能迟些会在redo流中重建。当块被重建时,块之前的所有redo会变成不相关的,因为这些redo应用到块的旧转生。例如,当用户删除或清空表,然后使用块来存储其它数据时,数据库创建一个新块。

假设介质恢复在块13上执行。

在这里插入图片描述

在块恢复开始之后,RMAN发现更改120在redo流中缺失,因为日志块损坏或是日志不能被找到。RMAN继续恢复如果块13后来在redo流中重建。假设在更改140中用户删除存储在块13中的表employees,分配一个新表在这个块中,插入数据到这个新表。在这个点,数据库格式化块13作为一个新块。现在可以继续这个块的恢复即使某些在重建操作之前的redo缺失。


2.块介质恢复的前提条件

通过使用RECOVER … BLOCK命令执行块介质恢复之前必须满足某些前提条件。

前提条件包括以下:
1)目标数据库必须运行在ARCHIVELOG模式,使用当前的控制文件打开或挂载。
2)如果目标数据库是备数据库,那么它必须在一致的状态,恢复不能在会话中,备份必须比损坏的文件更旧。
3)包含损坏的块的数据文件的备份必须是完全或级别0的备份。它们不可以是代理副本或增量备份。
如果只有代理副本备份存在,那么可以还原它们到非缺省的磁盘位置,在这种情况中,RMAN将它们视为数据文件副本,在块介质恢复过程中搜索它们来寻找块。
4)RMAN只能使用归档redo日志来恢复。
RMAN不能使用级别1的增量备份。块介质恢复不能通过缺失或不可访问的归档redo日志,虽然它某些时候能通过缺失的redo记录。
5)为了让RMAN搜索闪回日志寻找损坏块的好副本,闪回数据库必须在目标数据库上启用。
如果闪回日志已启用,包含损坏块的旧的未损坏的版本,那么RMAN可以使用这些块,可能加快恢复的速度。
6)目标数据库必须与实时查询的物理备数据库相关联让RMAN搜索数据库寻找损坏块的好副本。


3.恢复个别块

使用RECOVER … BLOCK命令恢复数据文件中的个别损坏块。

3.1.使用RECOVER … BLOCK命令恢复个别块

鉴别需要恢复的块,然后使用任何可用的备份来还原和恢复这些块。

恢复特定的数据块:
1) 获取数据文件序号和损坏块的块号。
最简单的定位跟踪文件和alert日志的方式是连接SQL*Plus到目标数据库,执行以下查询:
SELECT NAME, VALUE FROM V$DIAG_INFO;

2)启动RMAN,连接到目标数据库,它必须是挂载或打开的。

3)运行SHOW ALL命令来确认预配置了合适的通道。

4)在RMANr提示符下运行RECOVER … BLOCK命令,指定文件和损坏块的块号。

以下示例恢复2个块。
RECOVER
    DATAFILE 8 BLOCK 13
    DATAFILE 2 BLOCK 19;

也可以指定各种选项来控制RMAN的行为。以下示例指示只使用标签为mondayam的备份来搜索块。可以使用FROM BACKUPSET选项来限制RMAN搜索的备份的类型,或EXCLUDE FLASHBACK LOG选项限制RMAN搜索闪回日志。
RECOVER
DATAFILE 8 BLOCK 13
DATAFILE 2 BLOCK 199
FROM TAG mondayam;


3.2.使用数据恢复顾问恢复个别块

可以使用数据恢复顾问来诊断和修复数据块损坏导致的故障。在这个示例中,损坏块在执行VALIDATE DATABASE命令时被发现。

产生自动修复选项和使用数据恢复顾问修复故障:
1)启动RMAN,连接到目标数据库。

2列出数据恢复顾问记录的故障:
LIST FAILURE;

Database Role: PRIMARY
List of Database Failures
=========================
Failure ID Priority   Status 	Time Detected 	Summary
---------- -------- --------- ------------- 	-------
5720 		HIGH 	  OPEN 		24-APR-14 		Datafile 14:
'/home1/oracle/dbs/tbs_32.f' contains one or more corrupt blocks

3)为步骤2列出的故障生成修复选项。

以下命令生成修复选项和创建一个修复脚本来执行自动修复任务。
ADVISE FAILURE;

Database Role: PRIMARY
List of Database Failures
=========================
Failure ID Priority 	Status  Time Detected Summary
---------- -------- --------- ------------- -------
5720 		HIGH	 OPEN	 24-APR-14 	Datafile 14:
'/home1/oracle/dbs/tbs_32.f' contains one or more corrupt blocks
analyzing automatic repair options; this may take some time
using channel ORA_DISK_1
analyzing automatic repair options complete
Mandatory Manual Actions
========================
no manual actions available
Optional Manual Actions
=======================
no manual actions available
Automated Repair Options
========================
Option Repair Description
------ ------------------
1 Perform block media recovery of block 20 in file 14
Strategy: The repair includes complete media recovery with no data loss
Repair script: /home1/oracle/log/diag/rdbms/db12/hm/reco_287949467.hm

4)执行数据恢复顾问建议的自动修复。

RMAN使用ADVISE FAILURE命令生成的修复脚本来执行需要的修复。

REPAIR FAILURE;

Strategy: The repair includes complete media recovery with no data loss
Repair script: /home1/oracle/log/diag/rdbms/db12/hm/reco_287949467.hm
contents of repair script:
# block media recovery recover datafile 14 block 20;
Do you really want to execute the above repair (enter YES or NO)? yes
executing repair script
Starting recover at 24-APR-14
using channel ORA_DISK_1
channel ORA_DISK_1: restoring block(s)channel
ORA_DISK_1: specifying block(s) to restore from backup setrestoring blocks
of datafile 00014
channel ORA_DISK_1: reading from backup piece /backups/DB121/backupset/
2014_04_24/o1_mf_nnndf_TAG20140424T213309_9omsd7vb_.bkp
channel ORA_DISK_1: piece handle=/backups/DB121/backupset/2014_04_24/
o1_mf_nnndf_TAG20140424T213309_9omsd7vb_.bkp tag=TAG20140424T213309
channel ORA_DISK_1: restored block(s) from backup piece 1
channel ORA_DISK_1: block restore complete, elapsed time: 00:00:01
starting media recovery
media recovery complete, elapsed time: 00:00:03
Finished recover at 24-APR-14repair failure complete

当LIST FAILURE命令显示多于一个故障时,可以只为特定的故障执行修复操作。使用ADVISE FAILURE命令输出的Automated Repair Options部分中显示的选项序号来执行待定的修复选项。

以下命令只执行Automated Repair Options部分的选项2下列出的修复操作。
REPAIR FAILURE USING ADVISE OPTION 2;


4.恢复V$DATABASE_BLOCK_CORRUPTION中的所有块

RMAN可以自动修复列在视图V$DATABASE_BLOCK_CORRUPTION视图中的所有块。

恢复记录在视图V$DATABASE_BLOCK_CORRUPTION中的所有块:
1)启动SQL*Plus和连接到目标数据库。

2)查询V$DATABASE_BLOCK_CORRUPTION来确认损坏坏是否存在。
SQL> SELECT * FROM V$DATABASE_BLOCK_CORRUPTION;

3)启动RMAN和连接到目标数据库。

4)修复V$DATABASE_BLOCK_CORRUPTION中所有标记为损坏的块。
以下命令修复记录在视图中的所有物理损坏块:
RMAN> RECOVER CORRUPTION LIST;

块在被修复之后,数据库从V$DATABASE_BLOCK_CORRUPTION中移除它们。




来源:《Oracle Database Backup and Recovery User’s Guide,19c》

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/89438.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

whistle修改接口返回步骤(只影响前端展示,不会插入数据到数据库)

本文章向大家介绍whistle修改接口返回步骤(只影响前端展示,不会插入数据到数据库),主要包括whistle修改接口返回步骤(只影响前端展示,不会插入数据到数据库)使用实例、应用技巧、基本知识点总结…

m基于高阶累积量和信号子空间的信噪比估计方法的matlab仿真

目录 1.算法描述 2.仿真效果预览 3.MATLAB核心程序 4.完整MATLAB 1.算法描述 随着信息技术的飞速发展,信息战逐渐成为战争的一个重要方式。因此,掌握战场的信息控制权是赢得战争的重要因素。在信息战中,为了干扰和破坏对方的通信系统&…

Rvit中添加尺寸标注的前缀后缀和【一键尺寸定位标注】

一、Rvit中如何添加尺寸标注的前缀后缀 在进行尺寸标注尤其是多段连续的尺寸标注时常会用到诸如:3x20006000的标注样式,在Revt中应如何实现? 我们可以采用以下方法来解决: 1.如图1所示,先对该连续物体进行普通的对齐标…

前端基础(四)_CSS层叠样式表_什么是css_css样式的引入方式_样式表的优先级_样式选择器

一、什么是css? 主要用于html页面文本内容、图片外形、版本布局等外观样式的设置 二、css语法规则 语法: 选择器 声明语句; div {width: 200px;}div就是选择器 花括号中属性键值对就是 属性名:属性值 二、css样式的引入方式 1、行内样式–内联式 语…

uniapp中根据URL链接生成二维码(适用所有Javascript运行环境的前端应用),保存二维码到本地相册。

推荐一款适用所有Javascript运行环境的二维码生成组件。 uQRCode是一款基于Javascript环境开发的二维码生成插件,适用所有Javascript运行环境的前端应用和Node.js应用。 uQRCode可扩展性高,它支持自定义渲染二维码,可通过uQRCode API得到二…

转座子 垃圾DNA是指DNA中不编码蛋白质序列的片段,是DNA中最神秘的部分之一。

什麼是「垃圾DNA」? | GeneOnline News 垃圾dna与转座子 基因组重复序列分类 转座子 - 组学大讲堂问答社区 (omicsclass.com) (122条消息) 说说基因组的垃圾DNA-Transposable elements_msw521sg的博客-CSDN博客 Cell:转座子“跳跃”过程调控机制 - 生物研究专…

算法进阶指南:基本算法0x07 贪心

1.Sunscreen 传送门 #include<bits/stdc.h> using namespace std; const int N2510; pair<int,int>a[N],b[N]; int main() {int n,m;cin>>n>>m;for(int i1;i<n;i) cin>>a[i].first>>a[i].second;for(int i1;i<m;i) cin>>b[i…

手机小程序怎么制作?【手机小程序制作】

手机小程序怎么制作&#xff1f;首先给大家搞清楚&#xff0c;小程序本来就是依附手机APP运作的&#xff0c;是属于轻应用&#xff0c;例如微信、某付宝、某音短视频平台、某度、某手短视频平台&#xff0c;只能是在这些APP里打开小程序。像一些软件有PC端、Pad端&#xff0c;也…

Locust性能测试入门案例及分布式压测

前言 大家好&#xff0c;我是洋子。最近好多身边人都阳了&#xff0c;记得保护好自己 性能测试已经成为作为测试工程师/测试开发工程师一项重要的专项能力 在抢红包、活动秒杀这种短时间内流量突增的场景&#xff0c;或者是健康宝这种使用用户超级多的场景&#xff0c;我们均…

某大厦电力运维系统的设计及应用-Susie 周

1、项目简介 某公司位于北京市大兴区&#xff0c;于2001年在大兴分局注册成立&#xff0c;该在公司多年的发展里&#xff0c;始终为终端客户提供好的产品和技术支持、健全的售后服务&#xff0c;该公司主要经营110KV及以下送电线路&#xff08;含电缆工程&#xff09;和同电压…

Springboot内置的工具类之CollectionUtils

前言 实际业务开发中&#xff0c;集合的判断和操作也是经常用到的&#xff0c;Spring也针对集合的判断和操作封装了一些方法&#xff0c;但是最令我惊讶的是&#xff0c;我在梳理这些内容的过程中发现了一些有趣的现象&#xff0c;我的第一反应是不敢相信&#xff0c;再想一想&…

交换机(Exchange)

目录一、Exchange(交换机)的作用二、Exchange(交换机)的类型1.直连交换机&#xff1a;Direct Exchange2.主题交换机&#xff1a;Topic Exchange3.扇形交换机&#xff1a;Fanout Exchange4.首部交换机&#xff1a;Headers exchange5.默认交换机6.Dead Letter Exchange&#xff0…

一文入坑【Canvas】多图与案例详解

游戏玩法 游戏主要考验玩家的空间感和记忆能力&#xff0c;玩家需要通过开局的3秒内尽可能多的记忆两个空间内相同元素的位置&#xff0c;3秒后将会翻牌把图案盖住&#xff0c;玩家需要点击卡牌来翻转牌面&#xff0c;两张相同图案的卡牌即可保留&#xff0c;游戏计时将在卡牌…

小型水库雨水情测报及大坝安全监测建设介绍

一、背景介绍 二、站点布设 布局示意图&#xff1a; 红色&#xff1a;坝轴线 兰色&#xff1a;监测横断面&#xff0c;一般不少于3个&#xff0c;300m内间距2050m&#xff0c;300m外间距5010m。黄色:监测纵断面&#xff0c;一般不少于4个。上游坝坡正常蓄水位以上应布设1个。…

ssm+Vue计算机毕业设计校园闲置物品管理系统的实现(程序+LW文档)

ssmVue计算机毕业设计校园闲置物品管理系统的实现&#xff08;程序LW文档&#xff09; 项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff0…

WPF TreeView拖动排序拖拽排列

底部附有Demo示例。需要的朋友可以去下载参考 一、图示 先上图&#xff0c;不知为啥&#xff0c;GIF总看起来特别卡&#xff0c;实际却很流畅。 由于录制问题&#xff0c;GIF动画只会播放一次&#xff0c;需要重复观看的&#xff0c;请将网页关闭后重新打开再观看 WPF的资料…

自动化运维与普通运维有什么区别?

本文首发于知乎&#xff0c;由嘉为蓝鲸原创。 商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处。 01. 何为自动化运维&普通运维&#xff1f; 在了解两者的区别前&#xff0c;我们得先明确对二者的定义&#xff0c;总的来说运维工作的目的都是为了保障企业业…

Gateway简介

文档&#xff1a;Spring Cloud Gateway 小结&#xff1a; nacos &#xff1a;注册中心&#xff0c;解决服务的注册与发现 nacos &#xff1a;配置中心&#xff0c;配置文件中心化管理 Ribbon&#xff1a;客户端负载均衡器&#xff0c;解决微服务集群负载均衡的问题 Openfeign…

网络工程毕业设计 SSM游戏攻略资讯补丁售卖系统(源码+论文)

文章目录1 项目简介2 实现效果2.1 界面展示3 设计方案3.1 概述3.2 系统流程3.3 系统结构设计4 项目获取1 项目简介 Hi&#xff0c;各位同学好呀&#xff0c;这里是M学姐&#xff01; 今天向大家分享一个今年(2022)最新完成的毕业设计项目作品&#xff0c;【基于SSM的游戏攻略…

容器安全——云原生中镜像容器全生命周期防护思路

文章目录容器简介容器镜像传统安全面对容器安全的表现无法匹配动态IP无法侦测到容器内的各种行为无法扫描各种分层存储的镜像文件无法适应新的容器引擎和框架镜像容器全生命周期的安全防护Build防护Ship防护Run防护容器简介 我们都知道&#xff0c;VM是通过Hypervisor虚拟化技…