Oracle 11g OCM考纲复习:数据库备份恢复的配置

本文原始链接地址:https://www.askmac.cn/archives/11g-ocm-student-guide-backup-restore.html

数据库恢复的配置

1.1目标

在完成这个课程后,你能够完成下列事情:

  • 使用RMAN并且进行简单的配置
  • 配置你的数据库处于归档模式
  • 配置多个归档日志路径来增加有效性。
  • 指定一个保留策略
  • 配置快速闪回区域
  • 描述使用快速闪回区域的好处

 

1.2 备份和恢复功能的目的

备份和恢复功能会被下列场景所需要:

  • 数据保护

-介质故障

-用户误操作

-应用程序错误

  • 数据存储
  • 数据传输

 

当数据库出现问题的时候,你需要进行恢复。当你有了数据库的备份,你就可以防止那些问题,例如:介质故障,用户误操作,应用程序问题。介质故障是硬件级别的数据问题导致的;一个坏的控制器或者磁盘驱动器,会引起轻微或者很严重的问题。用户也引起数据错误,简单的例子就是发出了不应该发出的指令。这些类型的错误,可一被应用程序的BUG引起。

备份提供了数据的一份保留。你可能想为数据库的某个特殊的点创建一份副本,并且保留很长一段时间。这个为未来的恢复提供了保障,或者只是简单的满足规范。

你也可以使用备份和恢复工具来将数据移动到其他的数据库(甚至在其他的位置),一个数据库的备份是很有效的方法。备份数据库然后在其他的位置还原。

1.3 典型的备份和恢复方法

可以在最短的时间内修复数据丢失产生的错误,你可以按下列操作进行准备:

  • 配置数据库是可恢复的。
  • 定义一个备份计划。
  • 为不同的错误场景制定方案并测试。
  • 为备份和恢复的场景进行监控和故障诊断。
  • 从备份中进行恢复。
  • 从需要的时间点进行事务恢复。

为数据库制定一个健壮的备份和恢复策略是非常重要的,因为你承受不了数据丢失。这个策略包含下列任务:

  • 配置:在你的环境中需要配置好备份和恢复的环境。这包括一些配置,例如:备份存放地点,多久之前的备份需要被删除,还有加密。
  • 计划:备份可以按计划执行,这样就不用人工手动去执行备份。这个是很有帮助的,因为那些备份最佳的时间段,往往是在非工作时段。
  • 测试:你应该提前计划,并且在测试环境进行数据损坏或者丢失,使用备份进行恢复的测试。这是常规的做法,这样就能知道成功的备份,你需要做哪些事情。
  • 监控:进行备份的时候会需要资源,这样就会影响到数据库中的其他操作。你应该对备份恢复任务进行监控,确保它们的运行是高效地。
  • 修复:当你希望恢复数据的时候,你需要一个依赖一个备份。这将使得一些文件进入到数据库中,并且通常会将把数据库放置到过去地某个点的状态。
  • 恢复:如果在从备份中完成了数据文件地修复,你还需要把数据库放置到一个接近当前(或等于)地时间点,那么你需要进行恢复。这个过程会应用日志数据来修复数据。

 

1.4 oracle 备份恢复解决方案

oracle 为维持一个系统的可用性,提供了下列工具:

  • 恢复管理器(RMAN-Recovery Manager)

–增量备份

–块修复

–块(未使用)压缩

–二进制压缩

–备份加密

  • 数据泵

下列是一些主要的备份和恢复解决方案:

  • RMAN:是一个用来执行备份恢复的命令行工具。下面是一些使用RMAN的主要特性:

-增量备份:是一种备份的类型,只会将上一次增量备份到现在的变化写入到备份中。

-块级别的修复:一种修复特定块的方法,与整个表(使用数据泵)和数据文件(使用RMAN)相对。

-块(未使用)压缩:一种节省空间的方式,那些从来不会被使用的快,不会写入到备份中。

-二进制压缩:一种节省空间的功能,备份文件可以使用一些众所周知的算法进行压缩(就像linux 中zip一样)

-备份加密:一个用来进行备份的加密的安全策略。

 

  • 数据泵:

一个使用操作系统文件,来导入导出表的数据的命令行工具。

 

 

1.5 RMAN的使用:

在操作系统的命令行中调用RMAN,有一些提供的命令行参数可以使用。下列是一些常用的参数:

  • target:连接目标数据库的字符串。
  • catalog:连接恢复目录的字符串。
  • nocatalog:特别指定没有使用恢复目录。这是默认使用的一个参数•
  • cmdfile:指定要运行的命令文件。
  • log:指定输出日志的文件。

 

这里有个RMAN使用OS认证连接到本地数据库的例子,并且指定了需要运行的命令文件和日志文件(用于接收RMAN命令在这个会话中产生的日志):

$ rman target / cmdfile=~/fullbu.rman log=~/fullbu.log

 

在RMAN的窗口中,你可以提交RMAN 命令来管理你的备份环境,还可以按照你的需求使用多种方式创建备份。

这部分演示了如何查看寻在的备份(LIST BACKUP),删除过时的备份(DELETE OBSOLETE)。

这些命令和其他的一些命令都涵盖在本次的课程中。

注意:可以参考Oracle Database Backup and Recovery User’s Guide

Oracle Database Backup and Recovery Reference

 

1.6 RMAN的命令类型

RMAN 命令有下列几种类型:

  • 独立的命令:

-在RMAN窗口独立的执行

-不能成为run里面的子命令

  • 工作命令

-必须方在带括号的run命令中。

-作为一个命令集合执行

有一些命令既可以按独立命令方式执行,也可以安装工作命令的方式执行。

 

你可以使用2种基本类型的RMAN命令:独立命令和工作命令

独立命令在RMAN窗口中被执行,并且一般都是独立的。一些独立命令如下:

  • CHANGE
  • CONNECT
  • CREATE CATALOG, RESYNC CATALOG
  • CREATE SCRIPT, DELETE SCRIPT, REPLACE SCRIPT

 

工作命令一般是一个命令集,并且是安命令集中的顺序执行。如果在这个集合中的任何命令失败了,RMAN将停止处理,下面的命令都不回被执行。那些已经执行的命令不会受影响,它们不会被消除。

ALLOCATE CHANNEL就是一个只能作为工作命令的例子。这个命令只能被作为工作来执行,不能单独的执行这个命令。例如BACKUP DATABASE,这些命令既可以单独在窗口执行,也可以在运行块中执行。如果你使用了单独的命令,RMAN会给那些需要通道的命令,使用自动分配通道特性分配通道。

你可以以交互式或批处理的形式来运行单独命令和工作命令。

 

1.7 工作命令的例子

在run块中执行工作命令:

不像单独命令那样,工作命令必须在带括号的run块中执行。演示的那些命令,都放在run块中作为一个单独的命令单元执行。任何在run块中的配置都会在这个范围中被应用,并且会覆盖之前的配置。下面是一个例子:

  • ALLOCATE CHANNEL
  • SWITCH

 

RMAN会在run块中顺次的执行工作命令。如果其中任何一个命令失败了,那么RMAN会中止处理,不会执行块中下面的命令。实际上,run 命令块是作为一个命令单元。当run块中最后一个命令执行完毕后,oracle才会释放资源(例如I/O,内存或者调用的从属进程)

 

1.8数据库备份和恢复的配置操作

  • 将数据库配置成ARCHIVELOG模式

 

 

 

  • 配置数据闪回

 

数据库在归档模式时,在数据丢失后,你需要更多的恢复选项,包括恢复数据库的时间点或所操作的表空间。

建议尽可能的使用快速闪回区,来存放备份文件和一些和备份相关的文件(磁盘备份和归档日志)。

一些oracle备份恢复的相关特性,例如oracle 闪回数据库,保存闪回点,需要使用到快速闪回区。

 

1.9 归档模式

 

数据库中产生修改过的数据时,那些日志数据写入到联机日志文件,在一个指定的时间范围内写入到一个指定的文件。当文件写满时,归档进程复制在线日志文件到另一个地方,作为一份归档文件。它可以按照你的需求一直保存。这提供了更多的恢复机会,因为你可以保存,备份,存储所有产生的归档日志。

因为 在线联机日志是循环使用的,这里有一个协议去控制那些可以被重用的日志。在归档模式下,数据库只能使用那些已经归档过的日志。这保证了所有的日志文件都是归档过的。

 

1.10 配置归档模式

可以用下列几种方式将数据库置为归档模式:

  • 使用企业管理器(EM)

1.选中归档模式的复选框。

2.点击应用。数据库只能在mount状态下进行归档的设置。

3.在出现是否重启数据库的时候,选择是。

  • 使用SQL命令

1.挂载数据库。

2.执行alter database archivelog 命令。

3.打开数据库。

 

数据库在归档模式下,日志只有在被归档之后才能进行重写。

在EM企业管理器中,选择导航栏中的有效性>恢复设置中的归档模式复选框。数据库在进行这个调整后必须重启。
使用sql 命令将数据库置为归档模式,数据库必须处于挂载状态。为了使数据库进入挂载状态,首先要进入关闭状态,如果数据库是打开的,那么首先必须关闭数据库。下面是关闭打开的数据库,将数据库置为归档模式后,再打开数据库的命令:

SQL> SHUTDOWN IMMEDIATE

SQL> STARTUP MOUNT

SQL> ALTER DATABASE ARCHIVELOG;

SQL> ALTER DATABASE OPEN;

 

数据库处于非归档模式下(默认),只能恢复到最后一次备份的时间点。所有在备份之后的事务都会丢失。

在归档模式下,数据库可以恢复到最后提交的时刻。大多数生产数据库都在归档模式下。

注意:在将数据库置为归档模式后进行一次备份,因为你的数据库只能基于处于归档模式下的第一次备份,来进行恢复。

 

1.11 配置归档路径

这里有2种模式你可以选择,用来指定归档文件存放的地方。

  • 本地和远程的路径:

使用初始化参数LOG_ARCHIVE_DEST_n 来指定本地和远程的路径。最多可以指定10个,即n可以从1到10.指定本地存储路径时,在其中一个变量中增加LOCATION=’ ‘字符串,并且增加路径名称的值。例如:要指定/disk3/arch目录,可以设置其中的值如下:

LOG_ARCHIVE_DEST_1 = ‘LOCATION=/disk3/arch’

如果你想为备用数据库执行一个远程路径,使用SERVICE关键字,例如在下面的例子中, standyby1是备用数据库实例的网络服务名:

LOG_ARCHIVE_DEST_2 = ‘SERVICE=standby1’

  • 只设置本地的路径:另外的一些选择可以用来只指定本地的路径。LOG_ARCHIVE_DEST和LOG_ARCHIVE_DUPLEX_DES 参数可以设置为本地的值。因此,你可以有2份归档日志的文档存放地。例如:

LOG_ARCHIVE_DEST = ‘/disk1/arch’

LOG_ARCHIVE_DUPLEX_DEST = ‘/disk2/arch’

oracle建议使用LOG_ARCHIVE_DEST_n的方式,因为这个可以适用更灵活的场景,并且可以设置多路径。

1.12 保证成功归档

如果你指定了多个用来存放归档文件的路径,你需要指定一个,成功完成归档的路径的最小数目,来确保归档是成功的。可以设置LOG_ARCHIVE_MIN_SUCCEED_DEST 初始化参数。设置一个值,来保证成功接收归档的路径的数目。日志文件在满足这个条件之前(成功接收到归档路径的数目必须满足),都不会被重用。

例如上图中,指定了3个路径:2个本地的和一个远程的。LOG_ARCHIVE_MIN_SUCCEED_DEST设置为2,也就意味着必须在2个路径的归档要成功完成之后,日志文件才能被重写。如果其中一个路径失败,数据库不会停止,因为有2个路径是成功的。

在LOG_ARCHIVE_DEST_n模式下,LOG_ARCHIVE_MIN_SUCCEED_DEST的值可以是1到10,如果是LOG_ARCHIVE_DEST的模式,那么这个值只能是1到2,应为在这个模式下只能指定2个本地路径。

 

指定路径的强制和可选性

当你指定一个路径时,使用MANDATORY 或 OPTIONAL选项,可以指定其是一个强制或者非强制的路径。下面有个例子:

LOG_ARCHIVE_DEST_1 = ‘LOCATION=/disk3/arch MANDATORY’

默认是非强制的。

一个强制的路径是对于一些特别情况的考虑。如果所有的强制路径都失败了,oracle数据库认为归档就没有成功的进行,那么在线日志文件就不能被重用。在这种情况下,忽略LOG_ARCHIVE_MIN_SUCCEED_DEST参数

对于LOG_ARCHIVE_DEST指定的路径来说,都是强制的。LOG_ARCHIVE_DUPLEX_DEST指定的路径在LOG_ARCHIVE_MIN_SUCCEED_DEST = 1的时候是强制的,在LOG_ARCHIVE_MIN_SUCCEED_DEST = 2的时候是非强制的。

 

 

1.13 指定一个备份路径

备份可以被写入到:

  • 磁盘目录
  • 使用oracle 安全备份,到磁带上。
  • 介质管理库

-磁带

-使用代理,拷贝到磁盘或磁带。

  • 快速闪回区:用于备份恢复和闪回数据库的磁盘区域

 

备份可以写入到目标磁盘目录中,这个目录可以是MML 也可以是快速闪回区。指定一个磁盘目录或者使用快速闪回区,意味着备份存放在物理磁盘上。通常情况中,为了节省磁盘空间,把备份通过媒体管理器的接口移动到离线的磁带中。任何存在的路径都可以被指定为备份存放的路径。一个介质管理库可以用来拷贝文件到磁带设备,或者实现代理复制。一个代理拷贝,就是将MML所需求的文件拷贝到磁盘或者磁带。MML必须提供代理拷贝的服务。

如果你设置了快速闪回区,很多备份和恢复的工作对你来说更简单了。oracle 数据库自动的为文件命名,在空间不够的时候自动删除过期的文件。更多的一些快速闪回区的配置信息在后面的课程中提供。

指定备份是写入到磁盘,可以使用下面命令:

CONFIGURE DEFAULT DEVICE TYPE TO DISK;

之后,在创建备份的时候,如果format关键字被使用(用来指定本地备份的路径),那么备份会写入到指定的地方。如果快速闪回区被配置,那么会存放到快速闪回区。否则会写入到对应平台的默认位置。

 

指定备份写入到磁带,使用下面命令:

RMAN> CONFIGURE DEFAULT DEVICE

 

1.14 指定保留策略

  • 保留策略:描述备份将保留多长时间。
  • 两种保留策略类型:

-基于恢复窗口:在一段时间内,保证可以恢复到这段时间内的任意时刻

-基于冗余程度:建立多个必须保存的备份

  • 保留策略是互斥的,只能选择一个类型。

一个保留策略表示备份需要保存多久。你可以在RMAN中使用CONFIGURE命令来配置保留策略或者使用EM来配置。

 

基于恢复窗口的保留策略

一个最好的做法去确定时间就是,在发现错误时,使用基于时间的恢复到错误发生前的一个时候来修复错误。这段时间就称作为恢复窗口。这个策略是以天为单位。对于每个数据文件,至少有一个备份满足下列条件:

SYSDATE – backup_checkpoint_time >= recovery_window

你可以使用下面命令来配置一个恢复窗口的保留策略:

RMAN> CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF <days>

DAYS;

 

<days> 就是恢复窗口的大小

如果没使用恢复管理目录,你需要确保恢复创建的时间小于或等于控制文件参数CONTROL_FILE_RECORD_KEEP_TIME的值,防止控制文件中老的值被覆盖。如果是用了恢复管理目录,确保CONTROL_FILE_RECORD_KEEP_TIME的值大于目录之间同步的间隔。同步发生在当你:

  • 创建一个备份。在这种情况下,同步是隐式地完成的
  • 执行RESYNC CATALOG命令

 

冗余度保留策略

如果你需要确定保留一定数量的备份。你可以安装冗余度来配置保留策略。这个选项需要指定一个备份的数目,超过这个数目,之前的备份都是过期的。

默认保留策略的冗余度是1,这就说明在任何时候只有1个备份。在一个对于相同文件来说,一个备份将过期,当进行了一个最新版本的备份后。

你可以使用下面的命令来配置保留策略的冗余度:

RMAN> CONFIGURE RETENTION POLICY TO REDUNDANCY <copies>;

<copies>就是满足策略所需要的备份副本的数量。

禁用保留策略

你可能想完全的关闭保留策略。如果你在一个RMAN之外的独立系统中,将磁盘备份到磁带中时,你可能希望关闭保留策略。如果你关闭了保留策略,RMAN将不会认为备份会过期。RMAN不会决定何时从磁盘上删除备份(因为另外的程序管理),RMAN认为不需要配置这个。在这个情况下,备份的维持最长的时间由CONTROL_FILE_RECORD_KEEP_TIME这个初始化参数决定。使用下列命令关闭保留策略:

RMAN> CONFIGURE RETENTION POLICY TO NONE;

注意:你可以指定一个备份是在保留策略之外的特例。这就是所谓的档案备份,将涵盖在后面的”使用RMAN 创建备份”的课程中

Comment

*

沪ICP备14014813号-2

沪公网安备 31010802001379号