`

Oracle10g的闪回恢复区(Flash recovery area)

 
阅读更多
Oracle9i开始提供闪回查询,以便能在需要的时候查到过去某个时刻的一致性数据,这是通过Undo实现的。这个功能有很大的限制,就是相关事务的undo不能被覆盖,否则就无力回天了。oracle10g大大的增强了闪回查询的功能,并且提供了将整个数据库回退到过去某个时刻的能力,这是通过引入一种新的flashback log实现的。flashback log有点类似redo log,只不过redo log将数据库往前滚,flashback log则将数据库往后滚。为了保存管理和备份恢复相关的文件,oracle10g提供了一个叫做闪回恢复区(Flashback recovery area)的新特性,可以将所有恢复相关的文件,比如flashback log,archive log,backup set等,放到这个区域集中管理。

1.设置闪回恢复区
闪回恢复区主要通过3个初始化参数来设置和管理
db_recovery_file_dest:指定闪回恢复区的位置
db_recovery_file_dest_size:指定闪回恢复区的可用空间大小
db_flashback_retention_target:指定数据库可以回退的时间,单位为分钟,默认1440分钟,也就是一天。当然,实际上可回退的时间还决定于闪回恢复区的大小,因为里面保存了回退所需要的flash log。所以这个参数要和db_recovery_file_dest_size配合修改。

2.启动flashback database
设置了闪回恢复区后,可以启动闪回数据库功能。

首先,数据库必须已经处于归档模式

那么如何设置归档呢?很简单的步骤
1.关闭数据库
SQL> shutdown immediate;
2.启动数据库为mount模式
SQL> startup mount
3.显示和修改归档模式
SQL> archive log list
SQL> alter database archivelog;
SQL> alter database open
4.设置归档日志的格式
SQL>alter system set log_archive_format='ARC%s%t%r.log' scope=spfile;
5.设置归档日志的存放路径
SQL>alter system set log_archive_dest='+data/arcl' scope=spfile;
SQL>shutdown immediate
SQL>startup
6.强制切换归档日至
SQL>alter system switch logfile;
7.取消归档
SQL>alter database noarchivelog;

参数
1.格式参数
%s 日志序列号
%S 日志序列号(带前导的0)
%t 重做线程编号
%a 活动的ID号
%d 数据库ID号
%r RESELOGS的iD值

SQL> archive log list;
Database log mode              Archive Mode
Automatic archival             Enabled
Archive destination            USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence     156
Next log sequence to archive   158
Current log sequence           158

然后,启动数据库到mount状态
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.

SQL> startup mount
ORACLE instance started.

Total System Global Area 285212672 bytes
Fixed Size                  1218992 bytes
Variable Size              75499088 bytes
Database Buffers          205520896 bytes
Redo Buffers                2973696 bytes
Database mounted.

SQL>alter database flashback on;
数据库已更改。
SQL> alter database open;
数据库已更改。
SQL>selectFLASHBACK_ONfrom v$database;
FLASHBACK_ON
------------------------------------
YES

3.取消闪回恢复区
将db_recovery_file_dest参数设置为空,可以停用闪回恢复区。
如果已经启用flashback database,则不能取消闪回恢复区。
SQL> alter system set db_recovery_file_dest='';
alter system set db_recovery_file_dest=''
*
第 1 行出现错误:
ORA-02097: 无法修改参数, 因为指定的值无效
ORA-38775: 无法禁用快速恢复区 - 闪回数据库已启用

所以,必须先禁用flashback database,才能取消闪回恢复区

SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。

SQL> startup mount;
ORACLE 例程已经启动。
Total System Global Area 142606336 bytes
Fixed Size 1247732 bytes
Variable Size 83887628 bytes
Database Buffers 50331648 bytes
Redo Buffers 7139328 bytes
数据库装载完毕。

SQL>alter database flashback off;
数据库已更改。

SQL> alter database open;
数据库已更改。

SQL> alter system set db_recovery_file_dest='';
系统已更改。

4.闪回恢复区的内容
所有和恢复相关的文件都可以存放到闪回恢复区
SQL>select file_type from v$flash_recovery_area_usage;
FILE_TYPE
------------------------
CONTROLFILE
ONLINELOG
ARCHIVELOG
BACKUPPIECE
IMAGECOPY
FLASHBACKLOG
已选择6行。

上面的视图中可以看出,包括controfile,online redo logfile,archive logfile,rman backup
piece,rman image copy, flashback log等,都可以利用闪回恢复区来存放、管理。

5.闪回恢复区的一些限制
如果设置了闪回恢复区,则log_archive_dest和log_archive_duplex_dest将不可用

alter system set log_archive_dest='e:/'
*
第 1 行出现错误:
ORA-02097: 无法修改参数, 因为指定的值无效
ORA-16018: 无法将 LOG_ARCHIVE_DEST 与 LOG_ARCHIVE_DEST_n 或
DB_RECOVERY_FILE_DEST 一起使用

SQL> alter system set log_archive_duplex_dest='e:/';
alter system set log_archive_duplex_dest='e:/'
*
第 1 行出现错误:
ORA-02097: 无法修改参数, 因为指定的值无效
ORA-16018: 无法将 LOG_ARCHIVE_DUPLEX_DEST 与 LOG_ARCHIVE_DEST_n 或
DB_RECOVERY_FILE_DEST 一起使用

设置闪回恢复区后,如果没有设置过log_archive_dest_n参数,则归档日志默认是保存到该区域的

SQL> archive log list
数据库日志模式 存档模式
自动存档 启用
存档终点 USE_DB_RECOVERY_FILE_DEST
最早的联机日志序列 245
下一个存档日志序列 247
当前日志序列 247

实际上,oracle是通过隐式的设置log_archive_dest_10='location=USE_DB_RECOVERY_FILE_DEST'来实现的。所以,如果之后你修改过log_archive_dest_n将归档日志保存到其他位置,也可以修改该参数继续使用闪回恢复区。

多个数据库的闪回恢复区可以指定到同一个位置,但是db_name不能一样,或者db_unique_name不一样。

RAC的闪回恢复区必须位于共享磁盘上,能被所有实例访问。

6.闪回恢复区的空间管理
当闪回恢复区空间不足(使用超过85%)时,alert中会有警告记录
Tue Dec 19 10:45:41 2006
Errors in file e:/oracle/ora10/admin/ning/bdump/ning_rvwr_31968.trc:
ORA-19815: 警告: db_recovery_file_dest_size 字节 (共 52428800 字节) 已使用 87.29%, 尚有6665216 字节可用。

同时,oracle在alert中还会给出解决该问题的建议
Tue Dec 19 10:45:41 2006
************************************************************************
You have following choices to free up space from flash recovery area:
1. Consider changing RMAN RETENTION POLICY. If you are using Data Guard,
then consider changing RMAN ARCHIVELOG DELETION POLICY.
2. Back up files to tertiary device such as tape using RMAN
BACKUP RECOVERY AREA command.
3. Add disk space and increase db_recovery_file_dest_size parameter to
reflect the new space.
4. Delete unnecessary files using RMAN DELETE command. If an operating
system command was used to delete files, then use RMAN CROSSCHECK and
DELETE EXPIRED commands.
************************************************************************

如果闪回恢复区空间耗尽,且归档路径设置到了闪回恢复区中,则由于日志无法归档,数据库会hang住。

Tue Dec 19 10:45:57 2006
Errors in file e:/oracle/ora10/admin/ning/bdump/ning_arc0_32372.trc:
ORA-19815: 警告: db_recovery_file_dest_size 字节 (共 52428800 字节) 已使用 100.00%, 尚有 0 字节可用。

Tue Dec 19 10:45:57 2006
Errors in file e:/oracle/ora10/admin/ning/bdump/ning_arc0_32372.trc:
ORA-19809: 超出了恢复文件数的限制
ORA-19804: 无法回收 6836224 字节磁盘空间 (从 52428800 限制中)

ARC0: Error 19809 Creating archive log file to
'E:/ORACLE/ORA10/FLASH_RECOVERY_AREA/NING/ARCHIVELOG/2006_12_19/O1_MF_1_250_U_.ARC'
ARC0: Failed to archive thread 1 sequence 250 (19809)
ARCH: Archival stopped, error occurred. Will continue retrying
Tue Dec 19 10:45:58 2006
Errors in file e:/oracle/ora10/admin/ning/bdump/ning_arc0_32372.trc:
ORA-16038: 日志 1 序列号 250 无法归档
ORA-19809: 超出了恢复文件数的限制
ORA-00312: 联机日志 1 线程 1: 'E:/ORACLE/ORA10/ORADATA/NING/REDO01.LOG'

所以,对于生产库,如果将归档放到闪回恢复区中,需要密切关注闪回恢复区的空间使用情况,否则一旦闪回恢复区的空间用尽,将导致数据库无法提供服务。

通过查询视图v$flash_recovery_area_usage,可以获得当前闪回恢复区的空间使用情况,并且可以知道
是哪些文件占中了空间,据此可以做出相应的处理,或者加大闪回恢复区,或者移走相应的文件。
PHP code:--------------------------------------------------------------------------------
SQL> select * from v$flash_recovery_area_usage;
FILE_TYPE PERCENT_SPACE_USED PERCENT_SPACE_RECLAIMABLE NUMBER_OF_FILES
------------------------ ------------------ ------------------------- ---------------
CONTROLFILE                0                        0              0
ONLINELOG                    0                        0               0
ARCHIVELOG                91                        0             16
BACKUPPIECE               0                         0              0
IMAGECOPY                   0                         0               0
FLASHBACKLOG             8                        4              2
已选择6行。
----------------------------------------------------------------------------------
另外,v$recovery_file_dest视图也提供了闪回恢复区的概要信息。
SQL> select * from v$recovery_file_dest;
NAME SPACE_LIMIT SPACE_USED SPACE_RECLAIMABLE NUMBER_OF_FILES
----------------------------------- ----------- ---------- ----------------- ---------------
Eracleora10flash_recovery_area 104857600 101835264 0 17

引自:http://space.itpub.net/12361284/viewspace-166618
分享到:
评论

相关推荐

    Oracle 10g 闪回恢复区

    Oracle 10g 引入了一项名为“闪回恢复区”(Flash Recovery Area)的新特性,它不仅提升了数据库的备份效率,还简化了恢复过程。本文将详细介绍 Oracle 10g 闪回恢复区的功能、优势及配置方法。 #### 二、什么是闪...

    Oracle10g闪回恢复区详细解析

    设定闪回恢复区可以通过动态初始化参数`db_recovery_file_dest_size`来指定大小,例如设置为2GB,同时使用`db_recovery_file_dest`参数指定位臵,如 `/u01/app/oracle/flash_recovery_area`。调整这些参数后,可以...

    oracle flash_recover_area(闪回恢复区)原理和实践操作

    一片有关oracle 闪回恢复原理知识的书,为巩固基础知识,数据原理详解。

    Oracle 10g备份及恢复

    5. **闪回恢复区**:`$ORACLE_BASE/flash_recovery_area/`,如果启用了RMAN(恢复管理器)备份,这里会存储自动备份的文件。 在备份过程中,不仅要备份这些文件,还需要确保备份的完整性,包括系统表空间、用户表...

    oracle 闪回oracle 闪回oracle 闪回oracle 闪回

    2. **闪回数据库(Flashback Database)**:自Oracle 10g版本起,这项技术允许将整个数据库恢复到某个过去的SCN(系统更改编号)或时间点,而无需关闭数据库。这是通过在数据库级别启用闪回模式实现的。 3. **闪回...

    Oracle 10g数据库基础闪回技术.ppt

    - 闪回删除和闪回数据库利用了Oracle 10g的回收站(Recycle Bin)和闪回恢复区(Flash Recovery Area)功能。 - 开启撤销表空间自动管理回滚信息是使用闪回技术的前提,相关参数如UNDO_MANAGEMENT(设置为AUTO)、...

    Oracle 闪回,实验加解释

    为了支持闪回功能,Oracle引入了一个特殊的区域——闪回恢复区。该区域主要用于存储闪回所需的日志文件和其他恢复相关的文件。 ##### 1.1 闪回恢复区的三个关键参数 - **db_recovery_file_dest**:用于指定闪回...

    用Oracle闪回功能恢复偶然丢失的数据.txt

    为应对这种挑战,Oracle数据库自第10g版本起引入了强大的闪回(Flashback)功能,使数据恢复变得更加高效与灵活。本文将深入探讨Oracle闪回功能的核心原理,以及如何利用这一特性恢复偶然丢失的数据。 #### Oracle...

    oracle 闪回 flashback

    Oracle 10g引入了多种闪回功能,包括Flashback Database、Flashback Drop、Flashback Query以及Flashback Table。 1. **Flashback Database**: - Flashback Database允许用户将整个数据库恢复到过去的一个特定...

    oracle闪回数据库

    闪回日志位于快速恢复区(Flash Recovery Area)内,这是一个特殊的空间,用于存储备份、归档日志和闪回日志等恢复相关文件。 启用闪回数据库需要进行以下步骤: 1. 配置快速恢复区:首先,确保数据库处于...

    Oracle数据库闪回专题.doc

    3. 闪回恢复区(Flash Recovery Area) 闪回恢复区是Oracle 10g引入的新概念,反映了现代存储技术的发展。过去,备份和恢复通常依赖于磁带设备,但现在由于磁盘存储成本的降低,Oracle开始提倡使用闪回恢复区作为...

    Oracle_FlashBack闪回技术

    闪回数据库(Flashback Database)是Oracle 10g及以后版本引入的功能,它可以将整个数据库恢复到过去某个时间点的状态。为了实现这一目标,Oracle利用了多种机制和技术。 ##### 3.1 Flashback Log - **定义**:闪回...

    oracle10g新特性

    此外,10g 还引入了快速恢复区(Fast Recovery Area),它整合了闪回日志,提供了一个统一的空间来存储恢复相关的数据,如归档日志和闪回日志,提高了恢复速度和效率。 4. 增量备份与恢复预览: 10g 的 RMAN 支持...

    Oracle-10g数据库基础教程之闪回技术.pptx

    这需要使用到闪回恢复区(Flash Recovery Area)。 要启用闪回技术,首先要确保撤销表空间自动管理回滚信息,这可以通过设置`UNDO_MANAGEMENT`参数为`AUTO`,并指定`UNDO_TABLESPACE`来完成。此外,`UNDO_RETENTION...

    DAVE Oracle 闪回 学习笔记

    闪回恢复区是用于存储闪回数据、归档日志和备份文件等关键恢复信息的一个专用区域。正确地配置和管理闪回恢复区对于确保数据库的高可用性和灾难恢复至关重要。 ##### 2.1 配置闪回恢复区大小 当遇到闪回恢复区空间...

    Oracle第12章闪回技术.pptx

    此外,闪回恢复区(Flash Recovery Area)在闪回删除和闪回数据库中起着重要作用,它是一个专门的存储区域,用于存储归档日志、联机日志以及闪回数据。通过充分利用这些技术,数据库管理员能够更有效地管理和保护...

    ORACLE 10G归档设置

    Oracle 10G数据库的归档设置是数据库管理中的一个重要环节,主要目的是为了确保数据的安全性和完整性,特别是在数据库出现故障时能够进行恢复。归档日志记录了数据库的所有更改,以便在系统崩溃或介质故障后进行恢复...

    nbu oracle异机恢复

    - 指定闪回恢复区域(Flash Recovery Area),用于存放归档日志(archivelog)并启用归档功能。 - 取消选择示例模式(sample schemas)。 - 根据操作系统性能或默认设置进行配置。 - 查看并确认初始化参数。 - ...

    McGraw.Oracle.RMAN.11g.Backup.and.Recovery.2010

    RMAN的Flash Recovery Area(闪回恢复区)是恢复操作的重要组件,它可以自动管理备份和归档日志,确保在需要时能快速恢复。 此外,RMAN的脚本化功能使得复杂的备份和恢复任务可以通过编写脚本来自动化执行,提高...

Global site tag (gtag.js) - Google Analytics