Backup and Recovery Basics1

一、Backup and Recovery Overview
1、Backup and Recovery Overview
1.1 What is Backup and Recovery?


一般,备份和恢复引用各个策略和过程保护你的数据库背离数据丢失,同一时候在不论什么一种数据丢失后重建数据库。

1.1.1 Physical Backups and Logical Backups
一个备份是来自数据库文件的一个拷贝。它能够用做重建数据。

备份能够被分为物理备份和逻辑备份。
物理备份是被用做还原和恢复数据库的物理文件的备份,比方数据文件、控制文件和归档日志文件。

终于,每一个物理备份是保存数据库信息到其它位置(不论是磁盘还是某些离线存储比方磁带)的文件的一个拷贝。


逻辑备份包括使用一个oracle导出工具导出的逻辑数据(比方表或者存储过程)。它们被保存在一个二进制文件,以便之后使用对应的oracle导入工具再导入数据库。
物理备份是不论什么备份和恢复策略的基础。逻辑备份在非常多情况下是对物理备份的一个实用的补充,可是没有物理备份仅仅有逻辑备份是一个不充足的保护。
除非特殊指定。被用在备份和恢复文档的说法:备份引用物理备份,同一时候备份部分或者所有数据库是採取多种物理备份。在备份和恢复文档集中关注点差点儿仅仅是物理备份

1.1.2、从备份中恢复:错误和失败
尽管有非常多类型的问题停止一个数据库的基本操作或者影响到数据库I/O操作,可是仅仅有两种情况须要dba介入和介质恢复:介质失败和用户错误

其它失败可能须要dba介入去重新启动数据库(一个实例失败后)或者分配很多其它磁盘空间,可是这些情况一般不会引起数据丢失或者须要从备份恢复

了解用户错误-
当应用逻辑错误或者自己主动化缺少步骤的错误,数据库中的数据被错误地改变或者删除,会引起用户错误。数据丢失因为用户错误包含:缺少步骤、drop重要的表或者删除/改变
表的内容。虽然用户一直练习和小心的权限管理能够阻止最大的用户错误,可是你的备份策略决定怎样从容地恢复丢失的数据。



了解介质失败-
一个介质失败是须要执行数据库的磁盘文件的一个读或写的失败,因为磁盘的物理问题,比方磁盘头崩溃。不论什么一个数据库文件易受介质失败伤害。


一个介质失败后,适当的恢复技术依赖于被影响的文件和可用备份的类型

1.1.3、Oracle Backup and Recovery Solutions: RMAN and User-Managed Backup

为了完毕基于物理备份的备份和恢复,你有两个可用的方案:
(1)recovery manager
它是一个工具。它和执行在oracleserver上的会话集成从而完毕一系列的备份和恢复活动,也能够保存备份历史数据的一个资料库
(2)the traditional user-managed backup and recovery
传统的用户管理的备份和恢复,你使用混合的操作系统命令和sql*plus的备份、恢复能力直接管理组成数据库的文件

以上两种方法都能够被oracle公司支持。并且都有全面地文档化。

rman是数据库备份和恢复中更受人欢迎的解决方法。非常多的备份和恢复文档中关注基于rman的备份和恢复。
用户管理的备份和恢复技术在后边的单元Oracle Database Backup and Recovery Advanced User's Guide会被覆盖到。

不管你使用rman还是用户管理的方法。你都能够使用方案对象的逻辑备份来补充你的物理备份。

在还原和恢复后,被保存的数据随后再被导入从而重建这些数据。然而,逻辑
备份非常大程度的超过了备份和恢复文档的范围

1.2、备份和恢复:主要的概念
通过user-managed技术或者通过rman,数据库的物理结构和在数据库恢复进程中的角色决定了备份和恢复的构成。

1.2.1、Physical Database Structures Used in Recovering Data 
组成数据库的文件和其它结构保存了数据。同一时候守护数据库远离可能的失败。

该论述说明组成数据库的每个物理结构和它们在一个来自备份的数据库的重建中说扮演的角色。这部分包含
一下主题:
(1)数据文件和数据块
(2)重做日志
(3)回滚段
(4)控制文件

Datafiles and Data Blocks-
一个数据库由一个或多个叫做表空间的逻辑存储单元组成。在一个数据库中的每一个表空间由一个或多个叫做数据文件的文件组成。它们是在操作系统中的物理文件,这些文件包括了保存在
表空间中的数据。最简单的oracle数据库也会有一个保存在数据库中的表空间。
数据库使用叫做数据块的逻辑单元 管理在数据文件里的存储空间。数据块是数据库能够使用和分配的最小存储单元。

被改变或者新数据不会被立马地写入数据文件。

更新被缓冲到内存,过一段时间被写入数据文件。假设数据库没有经过一个正常的shutdown(但它打开时。由于一个实例失败异常退出或者
shutdown abort)。那么在内存中的数据通常不会被写入到数据文件。曾经被还原的数据文件。或者没有被关闭的数据文件,通常不能全然最新化。

一个数据库的数据文件的拷贝是不论什么备份的临界部分。

关于数据文件和数据块的具体内容參考Oracle Database Concepts。

Redo Logs-
重做日志记录一个数据库的全部数据文件的改变。

不论什么时刻的数据在被改变时,在它们被写入数据文件之前。会被记录到在线重做日志中。
一个oracle数据库至少须要两个重做日志组,同一时候,在每一个日志组至少有一个在线重做日志成员。不时地,数据库会循环转动在线重做日志组。
由于重做日志包括了数据文件全部变更的记录,假设按时地从某个时间点的数据文件的拷贝和从那个时间点向前的一个完整的重做日志集是可用的,
那么数据库能够重做记录在重做日志中的改变。假设重做日志已经被保存,上述才会有可能。

所以,保存重做日志是非常多备份策略中一个重要的部分。

保存重做日志的第一级别是通过一个archive进程。数据库能够把当前不再使用的重做日志组拷贝
到一个或者多个位置。

在一个重做日志文件被归档后,它能够被备份到磁盘或者磁带的其它位置,就是为了长久储存和以后的恢复操作。
没有归档日志。你的数据库备份和恢复选项会被严格地限制。

你的数据库在备份之前必须处于离线,同一时候你还原数据时,仅仅能恢复到备份的那个时刻。

Control Files-
控制文件包括了数据库物理结构的记录和这些物理结构的状态信息。保存在控制文件的几种类型的信息关系到备份和恢复:
(1)数据库信息(resetlogs scn和时间戳)
(2)表空间和数据文件的记录(文件名称、数据文件检查点、读/写状态、离线类别)
(3)重做线程(当前重做日志)的信息
(4)日志记录(日志序列号、每一个日志中的scn范围)
(5)受损数据块的信息

用于数据文件的恢复进程会被在控制文件的状态信息说引导,比方数据库的检查点、当前重做日志文件和数据文件的数据文件头检查点。控制文件的丢失使数据丢失的恢复更加困难。
Oracle Database Concepts提供了关于控制文件很多其它的信息。

Undo Segments-
一般地,当在数据文件里的数据被更新,那些数据的前镜像被写入到回滚段。

假设一个事务被回滚,这些回滚信息被用作还原到最初的数据文件内容。


在恢复的背景下,一旦须要的重做日志被应用的数据文件。oracle数据库就使用undo信息去回滚没有提交的事务。在回滚段被应用之前,数据库已经被打开。

你不应该关心undo段,也不应该直接把它们作为备份和恢复进程的一部分来管理

1.3、The Database Recovery Process: Basic Concepts
从一个备份重建数据库全部或者部分内容一般牵扯到两个方面:从备份中找回数据文件的拷贝和从归档和重做日志的备份应用改变,从而把数据库带回到希望的scn(常常,当前)。
为了从备份中还原一个数据文件或者控制文件,找回在磁盘、磁带或者其它介质上的文件,同一时候让它们在oracleserver上是可用的。为了恢复整个数据库在于完毕每一个数据文件的恢复。

scn100:一个数据库的全备(数据文件的拷贝和控制文件)
scn100-scn500:重做日志捕捉数据库的操作,日志忙时进行归档
scn500:介质失败导致数据文件丢失
怎样恢复?还原全备的数据文件到scn100,应用被捕捉到归档和重做日志的事务,最后回滚没有提交的事务

1.4、Forms of Data Recovery
前面的概述画出了还原和恢复进程的基础的轮廓。在这个概述中的几个变体对于备份和恢复是特别重要的:
这部分包括下面主题:
(1)数据文件介质恢复:还原数据文件,应用日志
(2)全然的,不全然的和时间点的恢复
(3)在实例失败后自己主动恢复:崩溃恢复

1.4.1、Datafile Media Recovery: Restore Datafiles, Apply Redo
数据文件介质恢复(常常被称为介质恢复)是用户发起的数据恢复中最主要的组成。它被用做从一个丢失的或者损坏的当前数据文件,spfile或者控制文件来恢复。


它也能够为一个没有使用offline normal选项的离线表空间被记录到重做日志但没有记录到数据文件的改变做恢复。不管你是用rman还是user-managed的备份和恢复
数据文件介质恢复都能够被完毕(对于user-managed的备份和恢复,介质恢复是基本的选择)

从备份还原数据文件的须要不被自己主动发现的。完毕介质恢复的第一步是通过拷贝备份手动地还原数据文件。

一旦数据文件被还原,数据库自己主动发现该数据文件是过期的,同一时候经历介质恢复。

下面情况强制要求你完毕介质恢复:
(1)还原一个数据文件的拷贝
(2)即使全部数据文件是当前的。你仍然须要备份控制文件
(3)一个数据文件没有使用offline normal选项被离线
对于介质恢复为了一个数据文件可用,至少要做一件事情:
(1)数据库的数据文件必须没有被打开
(2)假设数据库是打开的,须要恢复的数据文件必须离线

直到介质恢复完毕,须要介质恢复的文件才干操作为在线。你能够管理意料的介质恢复持续作为你备份和恢复策略的一部分。介质恢复的持续性被频繁的备份和并行的恢复參数影响。

1.4.2、Complete, Incomplete and Point-In-Time Recovery  
基于时间点的恢复对于用户错误或者逻辑损坏引起的数据丢失时一种解决方法
假设你须要完毕恢复时,发现丢失了备份之后到目标scn之间的归档日志,基于时间点的恢复也是你的唯一选择。



scn分别出如今v$log表的FIRST_CHANGE#列和V$DATAFILE的CHECKPOINT_CHANGE#列还有V$DATABASE的CHECKPOINT_CHANGE#上。 仅仅要说明三个值同样,
那么数据库就没有不同步的现象。

否则就要进行介质恢复。
全然恢复恢复数据到近期的时间点,它没有不论什么已提交事务的丢失。一般,"recovery"关系到全然恢复。偶尔。你须要把数据库返回到一个过去时间点的状态,比方,回滚一个用户错误,比方drop或delete一个表的内容,你想把数据库返回到删除发生之前的内容。

不全然恢复,也被称作基于时间点恢复,目标就是还原数据库到先前的目标scn或当前时间。

基于时间点恢复是对被用户错误或者逻辑损坏引起的数据丢失的一个响应。

假设你须要完毕恢复时,发现丢失了备份之后到目标scn之间的归档日志,基于时间点的恢复也是你的唯一选择。没有丢失的日志,你没有记录更新数据文件到目标scn。你唯一的选择是从备份的那个时间点恢复,最远到没有损坏的归档日志,接着完毕一个open resetlogs,丢弃丢失日志之后的全部改变(假设找到丢失的归档日志,同一时候你的数据库还在打开,你应该立马做一个全备)。



假设由于数据丢失只一个表空间受影响,你能够选择在这个表空间上完毕基于时间点的恢复来取代整个数据库的恢复。表空间基于时间点恢复是一个更高级的技术,它被文档化在Oracle Database Backup and Recovery Advanced User's Guide

1.4.3、Automatic Recovery After Instance Failure: Crash Recovery-崩溃恢复
crash recovery process是恢复的一个特殊组成。它发生在崩溃后(shutdown abort)实例启动的第一时间。

崩溃恢复的目标就是把数据文件带回到事务一致性的状态。保存全部已提交的事务到实例失败的瞬间。数据文件介质恢复更崩溃恢复一样,就是为了还原数据库完整性。

可是,在它们之间有非常多重要的不同点:

(1)介质恢复必须明白地被用户发起。

数据库不会自己执行介质恢复
(2)介质恢复是针对从备份还原的数据文件应用改变。而不是在线的数据文件
(3)介质恢复须要使用归档日志和在线日志

崩溃恢复不像手动完毕恢复的组成,它只使用在线重做日志和当前在线的数据文件,在崩溃恢复期间归档日志从未被使用。同一时候数据文件从未被还原。数据库应用在在线重做日志中不论什么待定的更新到数据文件。结果是:在崩溃后不管何时重新启动数据库,数据文件反映了实例崩溃瞬间那刻(数据库打开后,未提交事务的不论什么改变被回滚)。

崩溃恢复是一个过程,它包含:多个须要恢复的实例,从最后一个检查点起redo进程产生的重做日志,同一时候用户可配置的因素:比方重做日志文件的数量和大小。检查点频繁度和并行的恢复设置。你能够在数据库server中配置參数。那么能够调节崩溃恢复的持续时间。你也能够调节检查点来优化恢复时间。

在rac中的崩溃恢复发生在:在集群中的全部实例失败时。为了很多其它rac关于崩溃和实例恢复,阅读Oracle Real Application Clusters Quick Start

1.5、Backup and Recovery with RMAN
使用rman能够訪问可是用户管理的备份和恢复不能使用的几个数据备份和恢复技术和特性。最重要的是:
(1)增量备份
它提供紧凑的备份(保存只更改的块)和更快的数据文件介质恢复(降低应用重做的须要)
(2)块介质恢复
不须要离线和还原数据文件,只修复少量损坏的数据库
(3)不用备份不用的块
在某些情况下,备份期间rman能够跳过没有使用的数据块
(4)二进制压缩
使用被集成到oracle数据库中的压缩机制来降低备份的大小
(5)加密的备份
使用被集成到oracle数据库中的加密功能来以加密格式保存备份

rman降低管理员与备份策略的关联的工作。rman保存一个关于备份,归档日志和它自己活动的广泛的记录,被称作rman资料库。

在还原操作中,rman能够使用这些信息来消除多数场景下还原
时为你识别备份文件。你也能够使用资料库中的信息产生备份活动的报告。


rman信息的主要存储在生产数据库的控制文件里。你能够建立一个独立的recovery catalog。它是一个在separaterecovery catalog database为一个或多个数据库保存了rman镜像信息的模式对象。
这个文档其它剩余,Oracle Database Backup and Recovery Basics,关注于使用rman实现你的备份和恢复策略。

1.5.1、Files That RMAN Can Back Up
rman能够备份全部被用做高效恢复的数据库文件。rman支持备份备份下面文件类型:
(1)数据文件。数据文件的镜像拷贝
(2)控制文件。控制文件的镜像拷贝
(3)归档日志文件
(4)当前server參数文件
(5)备份片,包括了rman产生的其它备份

1.5.2、RMAN Backup Destinations: Disk and Media Managers
rman能够创建和管理在磁盘和磁带上的备份。备份在磁盘和磁带上最初创建的备份。从备份还原数据库文件。被用作磁带备份的设备常常引用SBT设备。rman通过media management layer和SBT设备交互

1.5.2.1、Types of Oracle Database Backup under RMAN
在物理备份中。依据数据库备份时数据库的状态、数据库哪个部分实际被备份、备份怎样被保存,有几种区分:
(1)About Consistent and Inconsistent Backups
物理备份也能够被划分为一致和不一致备份。

一致备份在数据库处于一致状态时被产生,这个状态是在重做日志中的全部变更被应用到数据文件。从一致备份还原的数据库能够被离开打开。不须要经历介质恢复。可是。一致性备份仅仅能产生在数据库一致性关闭后。不能是在a crash或者shutdown abort后

为了可用性的原因,oracle数据库被设计为操作非一致性备份,但数据库处于open状态时,进行备份。然而。从一个非一致性备份还原,必须要经历介质恢复,那么数据库能够在数据库打开之前从在线和归档日志应用改变。

由于介质恢复须要归档日志,使用非一致性备份须要你的数据库执行在归档模式

1.5.2.2、About Full and Incremental Backups
全备是包括全部数据文件的备份。rman或者使用操作系统级别的文件拷贝命令创建全备。增量备份是基于只拷贝数据文件里改变的数据块。

恢复时,从增量备份中提取全部改变的块能够取代重做日志的应用,从而相当地缩短恢复时间。增量备份只能使用rman产生。

1.5.2.3、About Image Copies, Backup Sets and Backup Pieces
通过rman创建的数据库备份能够是镜像拷贝,也能够是备份集。

一个镜像拷贝是数据库文件同样的拷贝。

rman能够创建镜像拷贝备份,然而在进程中。rman会检查损坏的内容,可是本地操作系统
文件拷贝工具不能做。镜像拷贝也能够使用操作系统命令比方cp创建
注意:假设你没有使用rman创建镜像拷贝,你在rman使用它们之前必须使用catalog命令来把镜像信息记录到rman资料库
rman也能够以rman指定格式叫做备份集保存它的备份。

一个备份集是备份片的集合,每一个备份片包括了一个或多个数据库文件的备份。在rman中完毕的备份任务能够创建一个或多个备份集。备份集的信息被记录在rman资料库。

备份集仅仅能通过rman创建和訪问。



1.6、Automatic Disk-Based Backup and Recovery: The Flash Recovery Area
创建不同备份和恢复文件的组件对每一个文件系统的大小没有不论什么了解。使用Automatic Disk-Based Backup and Recovery,你能够创建一个闪回恢复区。使备份文件的管理自己主动化。在磁盘上选择一个位置,为存储空间提供一个更大的边界,同一时候设置一个备份策略,那么数据库在那块空间管理用做备份的存储、归档日志和其它与恢复相关的文件。oracle建议你开启一个闪回恢复区来简化你的备份管理。

1.7、Oracle Flashback Technology: Alternatives to Point-in-Time Recovery
oracle闪回技术提供了一系列特性。它们提供了有用的能够选择的事物,比方查看数据的过去状态、回滚数据(不须要你从备份还原大部分数据库或者完毕基于时间点的恢复)。oracle的闪回特性在非常多状况中比介质恢复更高效,同一时候更低损坏。

oracle的非常多闪回特性在逻辑层次上操作,来查看和操纵数据库对象,就像例如以下的:

原文地址:https://www.cnblogs.com/yangykaifa/p/6771112.html