诊断和响应故障_RMAN数据修复概念

news2025/1/16 14:03:59

1.RMAN数据修复概述

1.1.关于需要数据修复的问题

虽然有几种问题会中止Oracle数据库的正常操作或影响数据库I/O操作,只有以下几种情况要求DBA介入和数据修复:用户错误,应用程序错误和介质故障


1.1.1.关于用户错误

由于应用程序逻辑错误或人为错误,数据库中的数据被错误更改或删除时用户错误发生。

例如,用户登录错误的数据库和删除数据库表。用户错误被预计是导致数据库停机的最大的原因。


1.1.2.关于应用程序错误

有时候软件发生故障会损坏数据块。在物理损坏中,也被称为介质损坏,数据库不能识别块。


1.1.3.关于介质故障

当正常操作过程中外部的问题阻止数据库读取或写入文件时介质故障发生。

典型的介质故障包括磁盘故障和数据文件删除。介质故障比用户或应用程序错误更少见,但备份和恢复策略需要为它们准备。


1.2.关于RMAN数据修复技术

RMAN提供多种数据修复的方法。

取决于你预料的情形,考虑将下表中描述的每个选项都包含在数据丢失的响应策略中,然后设置数据库让这些选项是可能的。

数据修复技术描述
Data Recovery Advisor(数据恢复顾问)这个Oracle数据库基础结构可以诊断故障,建议如何响应它们和自动修复故障。
逻辑闪回特性Oracle闪回技术特性的子集让你可以查看和倒回个别的数据库对象或事务到一个过去的时间。这些特性不需要使用RMAN。
Oracle闪回数据库闪回数据库是与介质恢复类似的块级别的恢复机制,但一般更快和不需要还原备份。如果预先启用了闪回日志,可以返回整个数据库到一个之前的状态而不需要从备份中还原数据文件的旧副本。必须为闪回数据库的日志或保证还原点配置一个快速恢复区域。
数据文件介质恢复这种介质恢复形式让你还原数据文件备份和应用归档redo日志或增量备份来恢复丢失的更改。可以恢复整个数据库或数据库的子集。数据文件介质恢复是最通用的恢复形式,可以防范物理和逻辑故障。
块介质恢复这种介质恢复形式让你恢复数据文件中的个别块而不是整个数据文件。
表空间时间点恢复(TSPITR)这是一个时间点恢复的专业的形式,可以恢复一个或多个表空间到比数据库的其它部分更早的时间。

2.关于RMAN还原(Restore)操作

在RMAN的还原操作中,可以选择要还原的文件,然后运行RESTORE命令。典型地,还原文件为介质恢复做准备。

可以还原以下文件类型:
1)数据库(所有数据文件)
2)表空间
3)控制文件
4)归档redo日志
5)spfile

可以为还原的数据文件和控制文件指定缺省位置或新的位置。如果还原到缺省位置,那么RMAN覆盖在这个位置中当前存在的相同名称的任何文件。或者,可以使用SET NEWNAME命令来为还原的的数据文件指定新的位置。然后运行SWITCH命令来更新控制文件来标示在新位置中的还原文件现在是当前的数据文件。


2.1.关于RMAN备份选择

RMAN使用在RMAN仓库中的可用的备份集或映像副本的记录来选择最佳的可用备份在还原操作中使用。

最近的可用备份或满足RESTORE命令中的任何UNTIL子语句的最近的备份,是优先的选择。如果两个备份来自同一个时间点,那么RMAN优先选择映像副本而不是备份集,因为RMAN可以从映像副本中比备份集(特别是存储在磁带上的)更快地还原。

在RMAN还原备份之前必须满足RESTORE命令的所有技术说明。除非被DEVICE TYPE子语句限制,RESTORE命令搜索配置的通道的所有设备类型上的备份。如果仓库中没有可用的备份满足所有指定的条件,那么RMAN返回一个错误指示文件不能被还原。

如果只使用手动分配的通道,那么如果在分配的通道的介质上没有可用的备份,备份作业可能会失败。配置自动通道让RMAN更可能可以找到和还原满足指定条件的备份。


2.2.关于RMAN还原故障切换(Restore Failover)

RMAN自动使用还原故障切换来跳过损坏的或不能访问的备份,寻找可用的备份。当备份不能找到时或包含损坏的数据,RMAN自动寻找另一个备份来还原期望的文件。

RMAN生成消息标示执行的故障切换(failover)的类型。例如,当RMAN故障切换到同一个文件的另外一个备份,它产生类似以下的消息:

failover to piece handle=/u01/backup/db_1 tag=BACKUP_031009

如果没有能用的副本可用,那么RMAN搜索之前的备份。产生的消息类似以下示例:

ORA-19624: operation failed, retry possible
ORA-19505: failed to identify file "/u01/backup/db_1"
ORA-27037: unable to obtain file status
SVR4 Error: 2: No such file or directory
Additional information: 3
failover to previous backup

RMAN重复执行还原故障切换(failover)直到它耗尽所有可能的备份。如果所有的备份不可用或没有备份存在,那么RMAN尝试重建数据文件。还原故障切换也在RECOVER,RECOVER … BLOCK和FLASHBACK DATABASE命令过程中还原归档redo日志出现错误时使用。


2.3.关于RMAN还原操作和ASM

当使用ASM磁盘组时,RMAN还原操作只有在数据文件的全名,包括转生(incarnation)与存在的数据文件名称不匹配时才创建数据文件的新副本。

一个完全合格的ASM文件名称是这样的形式+diskgroup/dbname/filetype/filetypetag.file.incarnation。当首先还原控制文件,然后还原其它数据库文件时,控制文件中的数据文件名称可能与存在的数据文件名称不匹配,因此数据文件会重建。

使用以下一种方法来确保存在的数据文件在还原或复制操作过程中不会重建:
1)在控制文件中,为每个数据文件使用别名。别名必须不能包含ASM转生数字(incarnation number)。
2)在还原控制文件之后和还原其它数据文件之前,使用CATALOG命令确保存在的数据文件登记在还原的控制文件中。下一步,使用SWITCH命令让还原的控制文件指向存在的数据文件。
3)在还原数据文件之前和还原控制文件之后,使用SET NEWNAME来重命名数据文件。


2.4.关于RMAN还原优化

RMAN使用还原优化来尽可能地避免从备份中还原数据文件。如果数据文件在正确的位置存在和它的头部包含预期的信息,那么RMAN不从备份中还原数据文件。

注:还原优化只检查数据文件的头部。它不会扫描数据文件的主体来查找损坏块。

可以使用RESTORE命令的FORCE选项来覆盖这种行为和无条件还原请求的文件

当还原几个数据文件的操作中断时,还原优化特别有用。例如,假设完全数据库恢复在除了一个数据文件之外其它都已经还原时遇到电源故障。如果再次运行相同的RESTORE命令,那么RMAN只还原在之前的尝试过程中没有还原的这个单一的数据文件。

还原优化在复制数据库时也可以使用。如果在复制的一个数据文件在正确的位置和有正确的头部内容,那么数据文件不被复制。不像RESTORE,DUPLICATE不支持FORCE选项。为了强制RMAN复制由于还原优化而跳过的数据文件,在运行DUPLICATE命令之前从副本中删除数据文件。


3.关于RMAN介质恢复(Media Recovery)

在介质恢复中,RMAN应用更改到还原的数据在时间上向前滚动数据。

RMAN可以执行数据文件介质恢复或块介质恢复。

数据文件介质恢复是应用redo日志或增量备份到还原的数据文件来更新它到当前时间或某些其它指定的时间。可以使用RMAN执行完全恢复,数据库时间点恢复(DBPITR),表空间时间点恢复(TSPITR)。可以使用RESTORE命令来还原丢失和损坏的数据文件或控制文件的备份和RECOVER命令来执行介质恢复。

块介质恢复是个别数据块而不是整个数据文件的恢复。

这部分只阐述数据文件介质恢复。块介质恢复是介质恢复的一种专业的形式,在“块介质恢复概述”中讲述。


3.1.关于增量备份和归档redo日志的选择

RMAN自动化介质恢复。RMAN在无论哪种最有效的组合中自动还原和应用增量备份和归档redo日志。

如果RMAN仓库指示要求的日志序列号副本在磁盘上不存在时,那么它自动从备份中还原要求的日志。缺省情况下,RMAN还原归档日志到快速恢复区域,如果归档目标设置为USE_DB_RECOVERY_FILE_DEST的话。否则,RMAN还原日志到初始化参数文件中第一个本地的归档目的地。


3.2.关于数据库转生(Database Incarnation)

无论何时使用RESETLOGS选项打开数据库时会创建新的数据库转生。

在完全的介质恢复之后,可以恢复正常的操作而不需要OPEN RESETLOGS。然而,在DBPITR或使用备份的控制文件恢复之后,必须使用RESETLOGS选项打开数据库,从而创建数据库的一个新转生。数据库要求一个新的转生来避免两个不同的redo流具有相同的SCN,但发生在不同的时间所引起的混淆。如果应用错误的redo到数据库,那么会损坏它。

一个单一的数据库的多个转生的存在决定了RMAN如何对待不在当前转生路径的备份。通常,当前的数据库转生是正确的可以使用的转生。然而,在某些情况中重置数据库到一个之前的转生是最佳方法。例如,你可能不满意已经执行的时间点恢复的结果,想返回数据库到RESETLOGS之前的一个时间。了解数据库转生为这些情形准备是有帮助的。


3.2.1.关于RMAN OPEN RESETLOGS操作

当使用RESETLOGS选项打开数据库时,RMAN执行某些操作。

执行的操作如下:
1)归档当前的在线redo日志(如果可以访问),然后擦除在线redo日志的内容,重置日志序列号为1。
例如,当使用RESETLOGS打开数据库时,如果当前在线redo日志是序列1000和1001,那么数据库归档日志1000和1001,然后重置在线redo日志为序列1和2。
2)如果当前不存在,创建在线redo日志文件。
3)初始化控制文件中的redo线程记录和在线redo日志记录到新数据库转生的开端。
更具体来说,数据库设置redo线程状态为关闭,设置redo线程记录中的当前线程序列为1,设置每个redo线程的线程检查点为日志序列1的开端,从每个线程选择一个redo日志,初始化它的序列为1等。
4)使用新的RESETLOGS SCN和时间戳更新所有当前的数据文件和在线redo日志和所有接下来的归档redo日志。

因为数据库不应用归档redo日志到数据文件除非RESETLOGS SCN和时间戳匹配,RESETLOGS要求阻止你使用不是来自当前转生的直接父转生(direct parent incarnation)的归档日志损坏数据文件。转生之间的关系在下面的章节会更完整地说明。

在以前的版本中,建议在OPEN RESETLOGS之后立即备份数据库。因为现在可以像任何其它备份一样轻松地恢复一个RESETLOGS之前的备份,做一个新的数据库备份是可选的。为了越过RESETLOGS执行恢复,必须拥有在最近的备份之后生成的所有归档日志和至少一个控制文件(当前的,备份的或创建的)。


3.2.2.数据库转生之间的关系

数据库转生之间可以处于如下的关系:
1)当前转生(current incarnation)是数据库当前正在运行的转生。
2)在OPEN RESETLOGS操作之后当前转生分支的原转生是当前转生的父转生(parent incarnation)。
3)父转生的父转生是祖先转生(ancestor incarnation)。祖先转生的任何父转生也是当前转生的祖先转生。
4)当前转生的直接祖先路径(direct ancestral path)以最早的转生开始,只包括到当前转生的祖先,父转生或当前转生的分支。

转生序号用来唯一地标记和鉴别redo流。下图描述数据库经过几个转生,每个都有一个不同的转生序号。

在这里插入图片描述


数据库的转生1从SCN 1开始,继续通过SCN1000到SCN2000。假设在转生1的SCN 2000时,向后执行时间点恢复到SCN 1000,然后使用RESETLOGS选项打开数据库。转生2现在以SCN 1000开始,继续到SCN 3000。在这个示例中,转生1是转生2的父亲。

假设在转生2的SCN 3000时,执行时间点恢复到SCN 2000,使用RESETLOGS选项打开数据库。在这个示例中,转生2是转生3的父亲。转生1是转生3的祖先。

当DBPITR或闪回数据库在数据库中发生时,一个SCN会涉及到多个时间点,取决于哪个转生是当前的。例如,上图中的SCN 1500涉及到转生1或转生2的SCN。

可以使用RESET DATABASE TO INCARNATION命令来指定SCN在一个特定的数据库转生的坐标(frame of reference)中被解释。当使用FLASHBACK,RESTORE或RECOVER来返回到一个非当前的数据库转生中的SCN时,命令RESET DATABASE TO INCARNATION是必需的。不过,RMAN在执行FLASHBACK时内含地执行命令RESET DATABASE TO INCARNATION。


3.2.3.关于孤儿备份(Orphaned Backups)

当数据库经过多个转生时,某些备份变成孤儿备份。孤儿备份是在不在直接祖先路径中的数据库转生过程中创建的备份。

假设Figure 14-1中显示的场景。如果转生3是当前的转生,那么以下备份是孤儿的:
1) 转生1在SCN 1000之后的所有备份
2) 转生2在SCN 2000之后的所有备份

相反,以下备份不是孤儿备份,因为它们在直接祖先路径上:
1) 转生1在SCN 1000之前做的所有备份
2) 转生2在SCN 2000之前做的所有备份
3) 转生3的所有备份

当你想还原数据库到一个不在直接祖先路径的SCN时,可以使用孤儿备份。如果从最早的备份到你想恢复的点的持续路径的归档日志存在,RMAN可以从父和祖先转生中还原备份和恢复到当前时间,即使跨越OPEN RESETLOGS操作。如果从表现在备份中的更改没有被丢弃的转生中还原控制文件,那么RMAN也可以还原和恢复孤儿备份。




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

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

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

相关文章

[附源码]计算机毕业设计JAVA中达小区物业管理系统

[附源码]计算机毕业设计JAVA中达小区物业管理系统 项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM my…

【LeetCode】1775. 通过最少操作次数使数组的和相等

题目描述 给你两个长度可能不等的整数数组 nums1 和 nums2 。两个数组中的所有值都在 1 到 6 之间(包含 1 和 6)。 每次操作中,你可以选择 任意 数组中的任意一个整数,将它变成 1 到 6 之间 任意 的值(包含 1 和 6&…

LaTeX行距以及字体大小

LaTeX行距以及字体大小1、行距2、字体大小1、全局模式2、局部模式1、行距 一:改变全文行距 导言部分前加入\linespread{2.0}即可,代表全文两倍行距。 二:部分段落需要改变行距 \usepackage{setspace} \begin{spacing}{2.0}(内…

js_实现网页自动跳转

网页自动跳转实现网页定时自动跳转实现网页定时自动跳转 效果&#xff1a; 10秒后自动跳转到网易云音乐的页面 代码&#xff1a; <!DOCTYPE html> <html><head><meta charset"utf-8"><title></title><style>.box{wi…

什么是 NFT 洗盘交易:洗盘交易背后的原理

2022年12月 CoinGecko 与 Footprint Analytics 联合报告 Data Source&#xff1a;Footprint Analytics 市场上有一种说法是&#xff0c;整个NFT 市场的交易本质是欺诈性的&#xff0c;并且是由洗盘交易者操纵出来的假象。我们经常看到许多 媒体头条 在推动这种说法。毕竟&…

HTML学生个人网站作业设计:宠物网站设计——萌宠有家(5页) HTML+CSS 简单DIV布局宠物介绍网页模板代码 DW学生个人网站制作成品下载

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

动态规划:01背包问题例题(leetcode+cpp实现)

文章目录分割等和子集最后一块石头的重量前情回顾&#xff1a; 动态规划(4)&#xff1a;01背包问题详解 分割等和子集 力扣传送门&#xff1a; https://leetcode.cn/problems/partition-equal-subset-sum/ 题目描述&#xff1a; 给你一个整数数组&#xff0c;将这个数组里的…

论文速读Backbone系列一:点云Transformer结合、PointNet++改进、点云卷积核设计

如有错误&#xff0c;恳请指出。 对一些经典论文进行快速思路整理&#xff0c;以下内容主要关注的是3d点云的backbone设计&#xff0c;包括transformer的应用&#xff0c;卷积核的设计&#xff0c;PointNet网络的改进。 文章目录一、Transformer改进1. 《PCT: Point Cloud Tran…

Wireshark高级特征

1&#xff0c;端点和网络会话 想要让网络通信正常进行&#xff0c;你必须至少拥有两台设备进行数据流的交互。端点&#xff08;endpoint&#xff09;就是指网络上能够发送或接收数据的一台设备。两个端点之间的通信被称之为会话&#xff08;conversation&#xff09;。Wiresha…

Python中如何选择Web开发框架?

Python开发中Web框架可谓是百花齐放,各式各样的web框架层出不穷,那么对于需要进行Python开发的我们来说,如何选择web框架也就变成了一门学问了。本篇文章主要是介绍目前一些比较有特点受欢迎的Web框架,我们可以根据各个Web框架的特性进行选择应用。 Django Django是市面上…

利用Astar算法实现飞行轨迹的三维路径规划(基于Matlab代码实现)

目录 1 概述 1.1研究背景 2 运行结果 3 Matlab代码实现 4 参考文献 1 概述 随着自动化技术的发展,现代航空技术水平有了前所未有的提高,促进了无人机在军事、民用领域的广泛应用。航迹规划技术作为无人机任务规划的关键技术,一直都是无人机领域的一大研究热点。无人机航迹规划是…

Synopsys Sentaurus TCAD系列教程之-- Svisual《一》看图工具

Svisual Svisual作为独立的模块&#xff0c;可以实现Inspect对于节点.plt曲线的查看&#xff0c;也可以实现TecplotSV的.tdr看图功能&#xff0c;还可以进行自动化操作。 当作看图工具使用 - 当作一维曲线看图工具&#xff08;.plt,Inspect) 1.1 打开&#xff1a;Sdevice模块…

[附源码]Python计算机毕业设计SSM基于自组网的空地一体化信息系统(程序+LW)

[附源码]Python计算机毕业设计SSM基于自组网的空地一体化信息系统&#xff08;程序LW) 项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff0…

F12抓包简单案例

F12抓包原理&#xff1a;在电脑访问互联网之前&#xff0c;进行包录制 1.谷歌开发者工具&#xff08;F12&#xff09; 元素&#xff08;Elements&#xff09;&#xff1a;页面元素查看分析&#xff0c;web自动化 控制台&#xff08;Console&#xff09;:查看日志 来源&#xf…

c语言---指针进阶(2)--玩转指针

今天内容不多&#xff0c;但都是精华。 1.数组参数和指针参数 2.函数指针 2.1笔试题 3.函数指针数组 1.数组参数和指针参数 例1&#xff1a;一维数组传参 void test(int arr[]) {} void test(int arr[10]) {} void test(int *arr) {}void test2(int *arr2[20]) {} void …

kotlin之声明变量的方式

让我们来看一下java声明变量的方式 Java声明变量方式 类型 变量名 等于 初始化值 String str "999999999"; kotlin声明变量方式 <关键字> <变量名称> : <类型> <初始化值> var sr : String "s…

[附源码]Python计算机毕业设计SSM计算机软考系统的设计与实现(程序+LW)

[附源码]Python计算机毕业设计SSM计算机软考系统的设计与实现&#xff08;程序LW) 项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。…

nginx安装及使用(详细版)

一、负载均衡介绍 负载均衡分为硬件负载均衡和软件负载均衡。 硬件负载均衡解决方案是最直接服务器和外部网络间安装负载均衡设备&#xff0c;这种设备我们通常称之为负载均衡器产品有F5、NetScaler等。 软件负载均衡解决方案是指一台或多台服务器响应的操作系统上安装一个或多…

【旋转目标检测】旋转标注工具roLabelImg使用教程

旋转目标检测系列文章:第一篇,学会使用roLabelImg标注工具 本次实验在Windows 10系统下进行, python版本3.6.10(2年前安装的python版本,有点老了) 下载标注工具项目代码: https://github.com/cgvict/roLabelImg 下载代码压缩包到桌面: 解压: 打开Anaconda Prompt终…

动态拉取接口数据

通过工具类动态拉取接口数据 写在前言&#xff1a; 使用工具类拉取接口中的数据&#xff0c;存放在自己的数据库&#xff0c;进行展示。 自己去看工具类中的注释&#xff0c;按照自己的需求去修改。 一、工具类 1、整理需求 想通过工具类把接口数据存放在数据库&#xff…