oracle之Flash Recovery Area全面介绍 (转载)
1. 设置闪回恢复区
闪回恢复区主要通过3个初始化参数来设置和管理
db_recovery_file_dest:指定闪回恢复区的位置
db_recovery_file_dest_size:指定闪回恢复区的可用空间大小
db_flashback_retention_target:指定数据库可以回退的时间,单位为分钟,默认1440分钟,也就是一天。当然,实际上可回退的时间还决定于闪回恢复区的大小,因为里面保存了回退所需要的flash log。所以这个参数要和db_recovery_file_dest_size配合修改。
SQL> ALTER SYSTEM SET db_recovery_file_dest_size=3g SCOPE=BOTH;
System altered.
SQL> ALTER SYSTEM SET db_recovery_file_dest=' D:\app\Administrator\flash_recovery_area ' SCOPE=BOTH;
System altered.
SQL> show parameter db_recovery_file_dest
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest string D:\app\Administrator\flash_recovery_area
db_recovery_file_dest_size big integer 3852M
SQL> show parameter db_flashback
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_flashback_retention_target integer 1440
2. 启动flashback database
默认情况数据库的flashback database是关闭,可以在mount exclusive状态下打开。在设置了闪回恢复区后,可以启动闪回数据库功能。
SQL> archive log list; --数据库必须已经处于归档模式
数据库日志模式 存档模式
自动存档 启用
存档终点 d:\archivelog
最早的联机日志序列 60
下一个存档日志序列 62
当前日志序列 62
SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup mount;
ORACLE 例程已经启动。
Total System Global Area 849530880 bytes
Fixed Size 1377896 bytes
Variable Size 637536664 bytes
Database Buffers 205520896 bytes
Redo Buffers 5095424 bytes
数据库装载完毕。
SQL> alter database flashback on;
数据库已更改。
SQL> alter database open;
数据库已更改。
SQL> select flashback_on from 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: 无法禁用恢复区 - 闪回数据库已启用
SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup mount;
ORACLE 例程已经启动。
Total System Global Area 849530880 bytes
Fixed Size 1377896 bytes
Variable Size 637536664 bytes
Database Buffers 205520896 bytes
Redo Buffers 5095424 bytes
数据库装载完毕。
SQL> alter database flashback off;
数据库已更改。
SQL> alter database open;
数据库已更改。
SQL> alter system set db_recovery_file_dest='';
系统已更改。
SQL> show parameter db_recovery_file_dest
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest string
db_recovery_file_dest_size big integer 3852M
SQL>
注意:
(1)DB_RECOVERY_FILE_DEST_SIZE 只有在 DB_RECOVERY_FILE_DEST 清空之后才可以清空。
(2)初始化参数 db_recovery_file_dest_size 的设定有一点点需要注意的地方:
文件的第0块和操作系统数据块头的空间大小不包含在内,该参数并不代表实际占用的空间大小。如果空间被压缩、镜像、RAID 的话,该参数的值意义是不一样的
4. 闪回恢复区的内容
所有和恢复相关的文件都可以存放到闪回恢复区
SQL> select file_type from v$flash_recovery_area_usage;
FILE_TYPE
--------------------
CONTROL FILE
REDO LOG
ARCHIVED LOG
BACKUP PIECE
IMAGE COPY
FLASHBACK LOG
FOREIGN ARCHIVED LOG
已选择7行。
上面视图中查询的结果列出的所有类型的文件,都可以利用闪回恢复区来存放、管理。
在一些 10g 的动态视图里( V$CONTROLFILE, V$LOGFILE, V$ARCHIVED_LOG, V$DATAFILE_COPY 等 )的新的列IS_RECOVERY_DEST_FILE ,指明相关的文件是否在恢复区内。
SELECT recid, blocks, is_recovery_dest_file
FROM v$archived_log
WHERE recid < 5;
RECID BLOCKS IS_
---------- ---------- ---
1 14141 NO
2 52 NO
3 7 NO
4 138 NO
SQL>
5 . 闪回恢复区的一些限制
如果设置了闪回恢复区,则log_archive_dest和log_archive_duplex_dest将不可用。
SQL> alter system set log_archive_dest='e:/' ;
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参数,则归档日志默认是保存到该区域的。实际上,oracle是通过隐式的设置log_archive_dest_10='location=USE_DB_RECOVERY_FILE_DEST'来实现的。所以,如果修改过log_archive_dest_n将归档日志保存到其他位置,也可以修改该参数继续使用闪回恢复区。
多个数据库的闪回恢复区可以指定到同一个位置,但是db_name不能一样,或者db_unique_name不一样。RAC的闪回恢复区必须位于共享磁盘上,能被所有实例访问。
6. 闪回恢复区的空间管理
闪回恢复区中添加或删除文件等变化都将记录在数据库的 alert 日志中,Oracle 10g 也针对该新特性提供了一个新的视图, DBA_OUTSTANDING_ALERTS,通过该视图可以得到相关的信息。
SQL> DESC dba_outstanding_alerts
名称 是否为空? 类型
----------------------------------------- -------- ----------------------------
SEQUENCE_ID NUMBER
REASON_ID NOT NULL NUMBER
OWNER VARCHAR2(30)
OBJECT_NAME VARCHAR2(513)
SUBOBJECT_NAME VARCHAR2(30)
OBJECT_TYPE VARCHAR2(64)
REASON VARCHAR2(4000)
TIME_SUGGESTED TIMESTAMP(6) WITH TIME ZONE
CREATION_TIME TIMESTAMP(6) WITH TIME ZONE
SUGGESTED_ACTION VARCHAR2(4000)
ADVISOR_NAME VARCHAR2(30)
METRIC_VALUE NUMBER
MESSAGE_TYPE VARCHAR2(12)
MESSAGE_GROUP VARCHAR2(64)
MESSAGE_LEVEL NUMBER
HOSTING_CLIENT_ID VARCHAR2(64)
MODULE_ID VARCHAR2(64)
PROCESS_ID VARCHAR2(128)
HOST_ID VARCHAR2(256)
HOST_NW_ADDR VARCHAR2(256)
INSTANCE_NAME VARCHAR2(16)
INSTANCE_NUMBER NUMBER
USER_ID VARCHAR2(30)
EXECUTION_CONTEXT_ID VARCHAR2(128)
ERROR_INSTANCE_ID VARCHAR2(142)
在闪回恢复区中的空间使用超过 85% 的时候,数据库将会向 alert 文件中写入告警信息。而当超过 97% 的时候将会写入严重告警信息。当闪回恢复区空间不够的时候,Oracle将报告如下类似的错误:
ORA-19809: limit exceeded for recovery files
ORA-19804: cannot reclaim 52428800 bytes disk space from 1258291200 limit
这个时候查询 dba_outstanding_alerts:
SQL> select reason,object_type,suggested_action from dba_outstanding_alerts;
REASON OBJECT_TYPE SUGGESTED_ACTION
------------------------------ -------------------- ----------------------------------------
db_recovery_file_dest_size of RECOVERY AREA Add disk space and increase db_recovery_
1258291200 bytes is 88.20% use file_dest_size, backup files to tertiary
d and has 148509184 remaining device, delete files from recovery area
bytes available. using RMAN, consider changing RMAN rete
ntion policy or consider changing RMAN a
rchivelog deletion policy.
同时,oracle在alert中还会给出解决该问题的建议
************************************************************************
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 RMANB ACKUP 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.
************************************************************************
V$RECOVERY_FILE_DEST视图 包含闪回恢复区的相关信息:
SQL> desc V$RECOVERY_FILE_DEST
名称 是否为空? 类型
----------------------------------------- -------- ---------------------
NAME VARCHAR2(513)
SPACE_LIMIT NUMBER
SPACE_USED NUMBER
SPACE_RECLAIMABLE NUMBER
NUMBER_OF_FILES NUMBER
SQL> select * from v$recovery_file_dest;
NAME SPACE_LIMIT SPACE_USED SPACE_RECLAIMABLE NUMBER_OF_FILES
---------- ----------- ---------- ----------------- ---------------
4039114752 0 0 0
通过查询视图v$flash_recovery_area_usage,可以获得当前闪回恢复区的空间使用情况,并且可以知道是哪些文件占中了空间,据此可以做出相应的处理,或者加大闪回恢复区,或者移走相应的文件。
SQL> select * from v$flash_recovery_area_usage;
FILE_TYPE PERCENT_SPACE_USED PERCENT_SPACE_RECLAIMABLE
-------------------- ------------------ -------------------------
CONTROL FILE 0 0
REDO LOG 0 0
ARCHIVED LOG 0 0
BACKUP PIECE 0 0
IMAGE COPY 0 0
FLASHBACK LOG 0 0
FOREIGN ARCHIVED LOG 0 0
如果闪回恢复区空间耗尽,且归档路径设置到了闪回恢复区中,则由于日志无法归档,数据库会hang住。所以,对于生产库,如果将归档放到闪回恢复区中,需要密切关注闪回恢复区的空间使用情况,否则一旦闪回恢复区的空间用尽,将导致数据库无法提供服务。
转载自:http://blog.csdn.net/liqfyiyi/article/details/7914057
oracle之Flash Recovery Area全面介绍 (转载)的更多相关文章
- Oracle 释放flash recovery area的四种方法
早上收到一台Linux服务器磁盘告警邮件以及监控告警日志程序发来的邮件.检查过后,发现Linux服务器中一个分区没有空间了.主要原因是由于昨晚程序员做升级时,产生了大量的归档日志,导致联机重做日志无法 ...
- Flash Recovery Area 的备份
Flash Recovery Area 的备份 备份命令是Flash recovery Area,该命令是Oracle 10g以后才有的.10g引进了flash recovery area,同时在rm ...
- Flash Recovery Area空间不足导致DB不能打开或hang住处理方法
当归档目录设置在闪回恢复区,并且闪回恢复区又满了的情况下, DB 就会无法归档而hang住或者无法打开. 这种情况下打开数据库会遇到如下错误信息: SQL> select status from ...
- Flash Recovery Area
1. 设置闪回恢复区 闪回恢复区主要通过3个初始化参数来设置和管理 db_recovery_file_dest:指定闪回恢复区的位置db_recovery_file_dest_size:指定闪回恢复区 ...
- flash recovery area配置
检查数据库是否开启闪回: SQL> select flashback_on from v$database; FLASHBACK_ON ----------------------------- ...
- Oracle的FRA(Flash Recovery Area)的好处
如果FRA的空间耗尽,只会影响到这个Oracle实例自身.所以不会耗尽所有磁盘空间从而影响到其它的数据库实例或其它应用.
- Flashback Recovery Area的设置与取消
在Oracle 10g中, Flash back家族分为以下成员: Flashback Database, Flashback Drop,Flashback Query(分Flashback Quer ...
- fast recovery area
First of all, the version of my enviroment is Oracle 11.0.2.3. The fast recovery area used to be cal ...
- Refresh recovery area usage data after manually deleting files under recovery area
Original source: http://www.dba-oracle.com/t_v$_flash_recovery_area.htm If you manually delete files ...
随机推荐
- jquery的uploadify上传jsp+servlet
1.准备材料:下载jquery.uploadify上传js 注意:这个上传在firefox下会出现问题如果你在项目中加了拦截器,因为session会丢失,所以你可以传参的时候带上你所需要的条件,在 ...
- Python核心编程(第九章)--文件和输入输出
文件内建函数: open()函数提供了初始化输入/输出操作的通用接口 open()基本语法:file_object = open(filename,access_mode='r',buffering= ...
- 【4】python核心编程 第七章-映射和集合类型
1.映射类型的相关函数 函数 操作 dict([container]) 创建字典的工厂函数.如果提供了容器类(container) , 就 用其中的条目填充字典,否则就创建一个空字典. len(map ...
- NFine常见错误
1.新增数据录入录入不进去提示:An error occurred while updating the entries.See the inner exception for details. 这样 ...
- BZOJ1013 球形空间产生器sphere
Description 有一个球形空间产生器能够在n维空间中产生一个坚硬的球体.现在,你被困在了这个n维球体中,你只知道球面上n+1个点的坐标,你需要以最快的速度确定这个n维球体的球心坐标,以便于摧毁 ...
- qt之窗口换肤(一个qss的坑:当类属性发现变化时需要重置qss,使用rcc资源文件)
1.相关文章 Qt 资源系统qt的moc,uic,rcc命令的使用 2.概要 毕业两年了,一直使用的是qt界面库来开发程序,使用过vs08.10.13等开发工具,并安装了qt的插件,最近在做客户 ...
- HDU3336——KMP算法
题意是问所有前缀出现的次数和,mod10007: 想一想next数组代表什么意思,是从当前失配位置走到上一个匹配位置的后面,next[i]的值说明以当前位置为结尾,长度为next[i]的后缀,与以开头 ...
- JavaScript - 基于原型的面向对象
JavaScript - 基于原型的面向对象 1. 引言 JavaScript 是一种基于原型的面向对象语言,而不是基于类的!!! 基于类的面向对象语言,比如 Java,是构建在两个不同实体的概念之上 ...
- 后台数据导出为Excel
数据导出的方法如下: 一.下载office的类库:microsoft.office.interop.excel.zip 根据电脑安装的office版本选择引入相应的类库,office2007选择12. ...
- ios想要取消执行延时调用的方法
想要取消执行延时调用的方法: [[self class] cancelPreviousPerformRequestsWithTarget:self selector:@selector(hideDia ...