闪回恢复区FRA(Flash recovery area)与闪回特性(flashback)
1、闪回特性FB
用于快速简单恢复数据库中出现的认为误操作等逻辑错误
Flashback由undo表空间的撤销段内容为基础,受限于UNDO_RETENTON参数。要使用flashback 的特性,必须启用自动撤销管理表空间。
#启用数据FB特性
startup mount;
select name, current_scn, flashback_on from v$database;#查看fb情况
alter database flashback on;
alter system set db_flashback_retention_target=1440 scope=both;
#设置数据
alter database open;
flash内部细分为 Flashback Database, Flashback Drop,Flashback Query和Flashback Table。但主要使用的是 Flashback Database
Flashback Database特性
Flashback Database 功能非常类似与RMAN的不完全恢复,无法达到FRA的完全恢复。启用后会包含一个rvwr进程,专门负责数据恢复,该进程后续也会向fra中写入flashback database log,这些日志无法与redo和归档相提并论,所以永远是不完全恢复。
#flashback datebase后闪回时间点前的操作全部无效,数据同样失效,且需要resetlogs重置scn
#启用falshback database后oracle会在sga创建新区域作为闪回缓冲区,同时新增rvwr进程用于创建维护闪回日志文件。
#启用falshback database,其实相当于启用fra过程。该功能默认关闭
#1、设置DB_RECOVERY_FILE_DEST、DB_RECOVERY_FILE_DEST_SIZE
SQL>ALTER SYSTEM SET DB_RECOVERY_FILE_DEST_SIZE=20G SCOPE=BOTH sid='*';
SQL>ALTER SYSTEM SET DB_RECOVERY_FILE_DEST='/DBA/FB' SCOPE=BOTH sid='*';
#使用falshback database则必须启用fra,开启归档日志。这两参数一个是存放位置一个是fra大小,fra会详细介绍。
#fra的设置空间越大,则falshback database恢复能力越强
#关闭falshback database
SQL>ALTER SYSTEM SET DB_RECOVERY_FILE_DEST='' #没有存放位置则不开启falshback
#FB闪回数据库的三种方式,属于不完全恢复
#闪回属于库级闪回,如果有不想闪回的表空间可以进行处理
alter tablespace users flashback off;#仅支持在mount状态下进行
#步骤
#1、关闭数据库
#2、启动到mount状态
#3、闪回到执行时间,执行闪回
#4、altersetlog 重置scn,开启库
#时间戳闪回--附带是实验
flashback database to timestamp('2010-10-24 13:04:30','yyyy-mm-dd hh24:mi:ss');
create table testflashback(id int,name varchar(20));commit;
insert into testflashback values(20,'5000');commit;#可以多重复几次,后面记得跟commmit
select count(*) from testflashback;
select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from v$version;#主要为获取函数执行结果,表不重要
truncate table testflashback;commit; #截掉所有得表和数据
#c版本切换到根容器,g版本sys用户
alter database flashback on;
shutdown immediate
startup mount
flashback database to timestamp('2010-10-24 13:04:30','yyyy-mm-dd hh24:mi:ss');
alter database open resetlogs;
startup open#cdb的话需要将pdb启动起来,具体操作方式不太一样
#回到原来得库
select count(*) from testflashback;#可以看到跟原先的结果一致
#scn闪回
flashback database to scn 918987
#获取当前scn,这个注意下就好。scn闪回不需要重置日志scn的resetlogs命令
select current_scn from v$database;
#时点闪回
flashback database ro restore bef_damage;
alter database open resetlogs;
#时点闪回需要创建闪回点,必须要在执行时点闪回前执行
create restore point bef_damage;
2、闪回恢复区FRA
FRA用于存储所有与恢复相关的文件,oracle使用FRA对本地连接的存储、oracle的OCFS群集文件系统、自动管理ASM特性。用于实现管理有助于全部磁盘空间分配,为所有与恢复相关文件提供集中存储位置
对于FRA来说空间尤为重要,如果没有分配足够得逻辑或者物理空间启动oracle时会发生空间警报,指出FRA当前空间有多大,对于FRA空间不足情况,oracle和fra都会触发空间清理作业
#FRA空间监控
#FRA常用图表--监控信息
dba_outstanding_alert
#空间报警被动查看
#fra中添加和删除文件得事件记录。包含与fra使用空间得告警,但是有关空间得告警并不会实时展示
#
v$recovery_file_dest
#FRA的空间大小、所使用的空间数量、可以回收多少空间,以及FRA中的文件数量。SPACE_RECLAIMABLE列,该列指示有可回收的空间
#SPACE_RECLAIMABLE 列用于指示可以用于回收的空间
#一般用于
v$flash_recovery_Area_usage
#FRA各个文件类型得详细信息(归档或重做日志、控制文件、闪回日志、备份、二次归档日志),空间百分比、文件数量、fra回收空间百分比。
#如果存在超出已定义空间100%,一般情况下表面最近fra空间容量被修改过,oracle尚未回收空间容量
#FRA空间不足时处理方式
#1、调大db_recovery_filr_dest_size参数,前提是有足够物理空间
#2、调高系统物理空间,然后继续扩大上面得参数
#3、FRA空间整体移动到另外得文件系统
#4、使用rman backup recovery area命令,将fra内容移动到另外一个位置。 不推荐
#5、FRA直接删除不需要物理备份片或者归档日志,然后使用rman crosscheck命令让rman重新检查所有备份集、备份片从逻辑上干掉存在。或者可以将这些文件移动到其他位置,然后执行crosscheck命令,后续如有需要可以再将文件移动回原位置,执行catlog使其在逻辑上重新生效
采取5中方式需要停用保留时间参数
#处理fra alert日志报警
#警报的处理逻辑
空间低于参数DB_RECOVERY_FILE_DEST_SIZE 15%生成警报
空间低于DB_RECOVERY_FILE_DEST_SIZE 3% 生成严重警报
完全填满,系统不可用,出发ora-19815,19809此时需要按照实际情况扩充空间或迁移整个FRA区域的存储位置
FRA闪回区为rman准备,用于简化管理所有的备份恢复工作。oracle中FRA属于一块可选磁盘位置,用于存储数据与恢复文件包含如下内容。启用闪回恢复区默认开启归档日志。
使用时默认使用多个位置
文件类型 | 说明 |
---|---|
归档和重做日志 | 归档日志及redo日志组成员副本文件 |
控制文件 control file | 创建数据库fra同步创建的副本文件 |
控制文件备份 | RMAN对控制文件的自动备份放在FRA中 |
闪回日志 | FRA自己的日志文件 |
rman数据文件副本 | 数据文件副本,与rman本地备份是两回事 |
rman备份和其他相关文件 | rman不做修改缺省的存储位置 |
如果闪回恢复区是唯一的归档日志目标,那么FRA中的空间被用完时。数据库会被挂起。
#常见命令
show parameter db_recovery_file_dest#闪回恢复区位置,缺省
#理论上每个数据库可以配置不同的闪回区,也可以多个共用一个,默认路径是FRA_HOME/db_name/file_type/date
alter system set log_archive_dest_10='LOCATION=USE_DB_RECOVERY_FILE_DEST';
alter system set log_archive_dest_1='LOCATION=/u03/database/archdir';#归档日志位置存在排他性,要么在fra处要么在本省的设置参数处log_archive_dest,但是可以设置归档日志log_archive_dest_10为缺省fra位置,然后其余参数设置为归档存储位置
#必要参数讲解
DB_RECOVERY_FILE_DEST
#闪回区位置定义,该位置可以是文件系统或ASM卷
#此参数为null,则缺省不启用FRA。
#但flashback_database优先级高于FRA,falshback_database启用为null也无效
DB_RECOVERY_FILE_DEST_SIZE
#闪回区尺寸,这是Oracle控制的文件空间限制,而与文件系统中的全部可用空间无关。该参数建议设置得不要太小,如果设置得太小后续保存备份文件或者日志时会因为空间不够而产生中断导致备份失败
DB_FLASHBACK_RETENTION_TARGET
#指定数据库可以闪回的时间范围,是闪回区内数据的保存周期
#FRA文件日志、备份保留策略
#FRA策略实际为RMAN策略。通过rman执行 rman configure retention policy进行设置
#如果文件保留时长超过了DB_FLASHBACK_RETENTION_TARGET参数设置得时间,一旦产生空间压力马上删除(文件先关联了保留策略且没有被设置为永久)
#FRA空间监控
#FRA常用图表--监控信息
dba_outstanding_alert
#空间报警被动查看
#fra中添加和删除文件得事件记录。包含与fra使用空间得告警,但是有关空间得告警并不会实时展示
#
v$recovery_file_dest
#FRA的空间大小、所使用的空间数量、可以回收多少空间,以及FRA中的文件数量。SPACE_RECLAIMABLE列,该列指示有可回收的空间
#SPACE_RECLAIMABLE 列用于指示可以用于回收的空间
#一般用于
v$flash_recovery_Area_usage
#FRA各个文件类型得详细信息(归档或重做日志、控制文件、闪回日志、备份、二次归档日志),空间百分比、文件数量、fra回收空间百分比。
#如果存在超出已定义空间100%,一般情况下表面最近fra空间容量被修改过,oracle尚未回收空间容量