设为首页 加入收藏

TOP

Oracle之Flash Recovery Area详解(一)
2017-01-24 08:15:25 】 浏览:527
Tags: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;


数据库已经关闭。


已经卸载数据库。


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_DES

首页 上一页 1 2 3 下一页 尾页 1/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇MySQL主从配置及实现读写分离 下一篇Navicat连接不上MySQL解决

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目