您的位置:首页 > 数据库 > Oracle

Oracle® 数据库备份恢复基础--5.3安装和维护Oracle闪回数据库

2012-06-02 09:34 369 查看
5.3安装和维护Oracle闪回数据库

本节介绍了Oracle闪回数据库的规划,配置数据库以便使用这一规划,并且也描述了有用的维护,监控和调优过程。

本次讨论包含以下主题:

.闪回数据库的限制

.启用闪回数据库的要求

.启用闪回数据库日志

.确定包括闪回日志的闪回恢复区的大小

.管理闪回恢复区中的闪回日志的空间

.确定闪回数据库的当前窗口

.闪回数据库的性能优化

.监视闪回数据库性能的影响

5.3.1闪回数据库的限制

由于闪回数据库是用于撤消数据文件直到您执行撤消命令的那一刻所发生的变化,它有以下限制:

.闪回数据库只能撤消Oracle数据库对数据文件所做的更改。它不能被用来修复介质故障,或从误删除数据文件的错误中进行恢复。

.您不能使用闪回数据库,撤消收缩数据文件的操作。

.如果数据库的控制文件从备份中还原或重新创建,所有累积的闪回日志信息将被丢弃。你不能使用FLASHBACK DATABASE返回到控制文件恢复或重新创建之前的一个时间点。

.当使用闪回数据库回到一个NOLOGGING操作正在进行的目标时间时,NOLOGGING操作所影响的数据库中的对象和数据文件可能会出现块损坏。例如,如果您在NOLOGGING模式下执行直接路径INSERT操作,该操作在2005年4月3日9:00到9:15之间运行,你以后需要使用闪回数据库返回到这个日期的目标时间09:07,在闪回数据库操作完成后直接路径INSERT更新的对象和数据文件可能会留下损坏的块。

如果可能,尽量避免使用闪回数据库的目标时间或SCN与NOLOGGING操作的一致。此外,执行任何NOLOGGING操作后立即对受影响的数据文件进行完整或增量的备份,以确保可恢复到操作后的时间点。如果你希望使用闪回数据库回到一个时间点,而此时间点正在进行直接路径INSERT,考虑在LOGGING模式下进行操作。

有关支持NOLOGGING模式的操作更多的信息,参见Oracle数据库SQL参考关于logging_clause的讨论。

5.3.2启用闪回数据库的要求

启用闪回数据库的要求是:

.必须将数据库运行在ARCHIVELOG模式下,因为归档日志将用于闪回数据库的操作中。

.您必须启用闪回恢复区,因为闪回日志只能存储在闪回恢复区。

.对于实时应用集群数据库,闪回恢复区必须存放在一个集群文件系统或ASM中。

5.3.3启用闪回数据库日志

要启用闪回数据库的闪回日志功能,设置DB_FLASHBACK_RETENTION_TARGET的初始化参数,并执行命令ALTER DATABASE FLASHBACK ON,按照下列过程:

1.启动SQL * Plus并确保该数据库已经加载,但未打开。例如:

SQL> SHUTDOWN IMMEDIATE;

SQL> STARTUP MOUNT;

2.必要时设置DB_FLASHBACK_RETENTION_TARGET为以分钟为单位所需的闪回窗口的长度:

SQL> ALTER SYSTEM SET DB_FLASHBACK_RETENTION_TARGET=4320; # 3 days

默认情况下,DB_FLASHBACK_RETENTION_TARGET设置为一天(1440分钟)。

3.使整个数据库具有闪回数据库的功能:

SQL> ALTER DATABASE FLASHBACK ON;

默认情况下,所有永久表空间会产生闪回日志。如果你愿意,你可以减少开销禁用特定的表空间中的闪回记录:

SQL> ALTER TABLESPACE tbs_3 FLASHBACK OFF;

在执行下列命令后,可以重新启用一个表空间的闪回日志:

SQL> ALTER TABLESPACE tbs_3 FLASHBACK ON;

请注意,如果您为表空间禁用闪回数据库,那么你必须在运行闪回数据库之前将数据文件脱机。

你可以用下列命令禁用的整个数据库的闪回日志:

SQL> ALTER DATABASE FLASHBACK OFF;

您还可以在一个备用数据库上启用闪回日志。在一个备用数据库上启用闪回数据库,使您能够在备用数据库上执行闪回数据库。备用数据库的闪回数据库在Data Guard环境中有许多应用。详情请参阅Oracle Data Guard概念和管理。

5.3.4设置闪回恢复区的大小以便包含闪回日志

使用闪回数据库时,您必须添加额外的空间到闪回恢复区以便在闪回恢复区中除了存储其他文件,还能存储闪回日志。

设置初始化参数DB_FLASHBACK_RETENTION_TARGET间接决定了该数据库将保留多少闪回日志数据。对于一个给定的一段时间内的数据库所产生的闪回日志的大小可以根据特定数据库的负载有很大的不同。在给定的时间间隔内如果数据库更新所影响的块越多,那么越多的磁盘空间会被用于存储在这段时间内产生的闪回日志数据。

5.3.4.1估算闪回数据库日志的磁盘空间需求

在V$FLASHBACK_DATABASE_LOG视图可以帮助你估计多少空间添加到您的闪回恢复区用于闪回日志。当您启用闪回数据库的日志功能,并设置了闪回保留指标,允许数据库运行在一段时间的正常负载下,产生闪回日志的代表性样本。然后运行下面的查询:

SQL> SELECT ESTIMATED_FLASHBACK_SIZE FROM V$FLASHBACK_DATABASE_LOG;

其结果是,为了满足当前的闪回保留指标,自启用闪回数据库以来基于数据库的负载所需的磁盘空间的估计。新增在$FLASHBACK_DATABASE_LOG.ESTIMATED_FLASHBACK_SIZE中指定的磁盘空间的数量到闪回恢复区的大小,以保持预期的数据库闪回日志的磁盘空间量。

在闪回恢复区的空间的使用总是在根据保留策略必须保留的备份和归档日志和随时遭受删除的其他文件(如闪回日志和已经备份到磁带上但仍缓存在磁盘上的备份)之间保持平衡。如果你还没有在你的闪回恢复区分配足够的空间来存储你的闪回日志,并且仍然需要满足您的其他备份保留的要求,闪回日志也许会从恢复区中删除,以便腾出空间。

5.3.5管理闪回恢复区中闪回日志的空间

除了通过设置闪回保留指标或使用保证还原点,您不能直接在闪回恢复区管理闪回日志。然而,你可以将闪回恢复区的空间作为一个整体进行管理,以最大限度地保留的闪回数据库日志的可用空间。这样增加了闪回保留指标实现的可能性。

为了为闪回日志腾出空间,使用BACKUP RECOVERY AREA, BACKUP BACKUPSET等命令将闪回恢复区的其他内容备份到磁带上。然后一旦文件已备份在磁带上就使用DELETE命令,明确从闪回恢复区中删除它们。如果这样还不能腾出足够的空间满足您的备份保留策略和闪回保留指标,那么就需要为闪回恢复区分配更多的空间。

注意:

当BACKUP RECOVERY AREA 备份闪回恢复区的内容到磁带时并不包括闪回日志.

5.3.5.1闪回日志的保留和删除规则

下面的规则控制闪回恢复区中闪回日志的创建,保存,覆盖和删除:

.无论何时只要必要为了满足闪回保留指标,只要有足够的空间,就会在闪回恢复区创建闪回日志。

.一旦保留足够久,对于满足的闪回保留指标它便不再需要,此时闪回日志便可被重复使用。

.如果数据库需要创建一个新的闪回日志并且闪回恢复区满了或不存在磁盘空间,那么最古老的闪回日志将被重用所覆盖。

注意:

重新使用的最老的闪回日志缩短闪回数据库窗口。如果由于磁盘空间不足,有足够多的闪回日志被重用,闪回保留指标可能无法得到满足。

.如果闪回恢复区满了,那么归档的重做日志可以自动从闪回恢复区中删除,以为其他文件腾出空间。在这种情况下,任何将需要使用FLASHBACK DATABASE 的重做日志文件的闪回日志也被删除。

5.3.6确定为当前窗口闪回数据库

当闪回日志被启用时,通过查询V$FLASHBACK_DATABASE_LOG.OLDEST_FLASHBACK_SCN和V$FLASHBACK_DATABASE_LOG.OLDEST_FLASHBACK_TIME可以确定在闪回数据库窗口中的最早的SCN,如下列例子所示:

SELECT OLDEST_FLASHBACK_SCN, OLDEST_FLASHBACK_TIME

FROM V$FLASHBACK_DATABASE_LOG;

如果此查询的结果经常表明闪回数据库窗口不满足闪回保留指标,你可能需要增加你的闪回恢复区,以容纳更多的闪回日志。

注意:

这一视图表示多少闪回日志数据对你的数据库是可用的。不过,存在一些操作,如收缩或删除数据文件,它可能阻止从随后的整个数据库中闪回数据库,即使这时闪回日志数据是可用的。此查询的结果不反映这种限制.

用闪回数据库能够达到的最近的SCN是当前数据库的SCN。下列查询将返回当前的SCN:

SQL> SELECT CURRENT_SCN FROM V$DATABASE;

5.3.7闪回数据库的性能优化

维护闪回日志,对Oracle数据库实例的开销相对有限。由于定期将更改的数据块从内存写入闪回日志相对次数不是很频繁,故限制了处理和I/O的开销。

为了使启用闪回数据库的大型生产数据库达到良好的性能,Oracle提出以下建议:

.闪回恢复区使用快速文件系统,并且最好是没有操作系统的文件缓存。数据库在闪回恢复区创建的文件,包括闪回日志,通常是较大。操作系统文件缓存对这类文件通常是无效的,并读取和写入这些文件实际上可能增加CPU开销。因此,被推荐使用的文件系统,应避免操作系统的文件缓存,如ASM这样的文件系统。

.为用于闪回恢复区的文件系统配置足够的磁盘驱动器。对于大型生产数据库,可能需要多个磁盘驱动器支持数据库所需的磁盘吞吐量,从而有效地写入闪回日志。

.如果用来存放闪回恢复区的存储系统不具有非易失性的RAM,尝试配置基于条带的存储卷的文件系统,具有相对较小的条带大小为比如128K。这将使每个闪回日志横跨多个磁盘驱动器同时写入,从而提高性能

.对于大型生产数据库,INIT.ORA参数LOG_BUFFER最少设置为8MB。这可以确保数据库分配写入闪回数据库日志的最大内存(通常是16MB)。

打开闪回数据库日志的开销取决于在数据库中混合读取和写入的负载。密集型写的工作负荷越多,闪回数据库日志所造成的开销越高。 (查询不更改数据,从而不增加闪回数据库的日志活动。)

5.3.8监视闪回数据库性能的影响

监控系统有关闪回日志使用情况的最好方法是使用Oracle的STATSPACK进行性能统计。例如,如果你看到"flashback buf free by RVWR" 为顶级等待事件,它表明,Oracle不能非常快地写入闪回日志。在这种情况下,你可能需要调整闪回恢复区所使用的文件系统和存储,也许可以使用“闪回数据库性能调优”中描述的方法之一进行这项工作。

V$FLASHBACK_DATABASE_STAT视图(在Oracle数据库参考中描述)显示数据库记录的闪回数据的字节。视图中的每一行显示累计的统计(通常在一个小时的间隔内)。FLASHBACK_DATA和REDO_DATA列描述分别在此时间间隔内的闪回数据和重做数据,而DB_DATA列描述读取和写入的数据块的字节。请注意,FLASHBACK_DATA和REDO_DATA按相应顺序写入,而DB_DATA对应于随机的读取和写入。

由于顺序I/O和随机I/O之间的区别,I/O开销更好的指示闪回日志所进行的I/O操作的数量。 在V$SYSSTAT中下列统计数字可以告诉你,在数据库实例中基于各种目所进行的I/O操作数:

列名 列的含义

物理写入I/O请求 写数据块发出的写操作的数目

物理读取I/O请求 读取数据块发出的读取操作的数目

重做写入 写入到重做日志发出写操作的数目。

闪回日志写入 写闪回日志发出的写操作的数目。

关于在V$SYSSTAT视图中的列的更多细节,请参阅Oracle数据库参考。

5.3.9发生I/O错误时闪回写入后台进程(RVWR)的行为

当启用闪回或当存在具有保障的恢复点,后台进程RVWR将闪回数据写入到在闪回恢复区中的闪回数据库日志中。如果RVWR遇到I/O错误,下面是预期的行为:

.如果存在任何保证还原点的定义,当RVWR遇到I/O错误时,实例将崩溃。

.如果没有保证还原点定义,当RVWR时遇到I/O错误,实例不会崩溃。分成下列2种情况:ok

.在一个主数据库,当数据库是打开的时候,Oracle会自动禁用闪回数据库。所有现有的交易及查询将继续不受影响。单实例和RAC都期望这种行为。

.在物理或逻辑备用数据库上,RVWR会被挂起,周期性重试I/O是否可用。这可能最终挂起逻辑备用或物理备用的管理恢复。 (Oracle不存在备用实例崩溃,因为它不希望主数据库崩溃,进而处于最大保护模式下。)为了解决挂起,一个DBA可以执行了SHUTDOWN ABORT命令或执行ALTER DATABASE FLASHBACK OFF命令。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: