首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Flash >

racle Flashback 技术 小结

2012-07-03 
racle Flashback 技术 总结?? Flashback????????????Flashback?技术是以Undo segment中的内容为基础的,?因

racle Flashback 技术 总结

?

? Flashback

????????????Flashback?技术是以Undo segment中的内容为基础的,?因此受限于UNDO_RETENTON参数。要使用flashback?的特性,必须启用自动撤销管理表空间。

????????????在Oracle 11g里又出了一个新特性:Oracle Flashback Data Archive. FDA通过将变化数据另外存储到创建的闪回归档区(Flashback Archive)中,以和undo区别开来,这样就可以为闪回归档区单独设置存储策略,使之可以闪回到指定时间之前的旧数据而不影响undo策略。

?

????????????在Oracle 10g中,?Flash back家族分为以下成员:?Flashback Database,?Flashback Drop,Flashback Query(分Flashback Query,Flashback Version Query,?Flashback Transaction Query?三种)?和Flashback Table。

?

2.4.1?闪回恢复区(Flashback Recovery Area)

????????????在oracle 9i中引入flashback查询,以便能在需要的时候查到过去某个时刻的一致性数据,依赖于undo表空间存储的信息来闪回查询以前的版本,当然这个受限于undo表空间的大小,以及保留策略。如果undo?被覆盖了就不能进行查询。

oracle10g中增强了闪回查询的功能,并且提供了将整个数据库回退到过去某个时刻的能力,这是通过引入一种新的flashback log实现的。flashback log有点类似redo log,只不过redo log将数据库往前滚,flashback log则将数据库往后滚。为了保存管理和备份恢复相关的文件,oracle10g提供了一个叫做闪回恢复区(Flashback recovery area),这个区域默认创建在oracle_base目录下。?可以将所有恢复相关的文件,比如flashback log,archive log,backup set等,放到这个区域集中管理。

?

2.4.1.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

?

????????????我们看到db_flashback_retention_target?默认是1440分钟,即24?小时,需要注意的是该参数虽然未直接指定flash recovery area大小,但却受其制约,举个例子假如数据库每天有10%左右的数据变动的话,如果该初始化参数值设置为1440,则flash recovery area?的大小至少要是当前数据库实际容量的10%,如果该初始化参数设置为2880,则flash recovery area?的大小就至少是数据库所占容量的20%。

?

修改该参数:

SQL>alter system set db_flashback_retention_target=2880 scope=both;

?

2.4.1.2??取消闪回恢复区

????????????将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?的话,该参数的值意义是不一样的

?

2.4.1.3??闪回恢复区的内容

所有和恢复相关的文件都可以存放到闪回恢复区

?

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 ,指明相关的文件是否在恢复区内。

?

/* Formatted on 2010/8/13 0:04:22 (QP5 v5.115.810.9015) */

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>

?

热点排行