Backup and Recovery Basics1

本文介绍了Oracle数据库备份与恢复的基础概念,涵盖了物理备份与逻辑备份的区别、介质恢复流程及不同形式的数据恢复策略,如完全恢复、不完全恢复和基于时间点的恢复等。此外,还探讨了使用RMAN进行备份的优势,以及闪回技术如何为数据恢复提供替代方案。
一、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
它是一个工具,它和运行在oracle服务器上的会话集成从而完成一系列的备份和恢复活动,也可以保存备份历史数据的一个资料库
(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(经常,当前)。
为了从备份中还原一个数据文件或者控制文件,找回在磁盘、磁带或者其他介质上的文件,同时让它们在oracle服务器上是可用的。为了恢复整个数据库在于完成每个数据文件的恢复。

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进程产生的重做日志,同时用户可配置的因素:比如重做日志文件的数量和大小,检查点频繁度和并行的恢复设置。你可以在数据库服务器中配置参数,那么可以调节崩溃恢复的持续时间。你也可以调节检查点来优化恢复时间。

在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)当前服务器参数文件
(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的很多闪回特性在逻辑层次上操作,来查看和操纵数据库对象,就像如下的:

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值