现在的位置: 首页 > 综合 > 正文

oracle之Flash Recovery Area全面介绍

2013年01月02日 ⁄ 综合 ⁄ 共 3235字 ⁄ 字号 评论关闭

转自:http://blog.sina.com.cn/s/blog_4ab088470106b36f.html

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>

 

 

注意:

1DB_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_destlog_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:/';

抱歉!评论已关闭.