oracle闪回技术-----使用闪回日志来恢复用户的逻辑错误,这种修复只针对用户逻辑错误的恢复,而不涉及整个数据库的恢复
恢复更具有针对性而且恢复时间大大减少。
对于闪回数据库而言,闪回日志不会被归档
启用闪回数据库-----数据库处于归档模式
使用DB_RECOVERY_FILE_DEST参数指定的目录作为存储目录,该参数的值即为快速恢复区
db_flashback_retention_target,该参数的值是一个一分钟为单位的数字。
通过数据字典v$flashback_database_log来评估需要的快闪恢复区空间
select estimated_flashback_size,retention_target,flashback_size
from v$flashback_database_log
mount - alter database flashback on
查看启用状态
select flashback_on from v$database;
关闭闪回数据库
alter database falshback off;
禁用某个表空间的闪回特性
alter tablespace users flashback off;
通过数据字典V$TABLESPACE来查询该表空间是否已经不被闪回保护
col flashback_on for a15
select name,flashback_on
from v$tablespace;
如果要重新对表空间启用闪回数据库--需要将数据库启动到Mount状态
startup mount
alter tablespace users flashback on;
startup mount
alter database flashback off;
闪回数据库方法
可以使用RMAN方法也可以使用SQL指令的方法实现。
使用RMAN闪回数据库如下3中方法
1.将数据库闪回到过去的某个时间点,通过to_date函数指定具体的时间
flashback database to time=to_date('xxxx-xx-xx xx:xx:xx','yyyy-mm-dd hh24:mi:ss')
2.将数据库闪回到过去的某个SCN,不太实际
flashback database to scn =xxxxx
3.将数据库闪回到特定的日志序列号之前的状态,不包括序列号345
flashback database to sequence=345 thread=1;
使用sql指令闪回数据库
1.将数据库闪回到时间戳指定的状态
flashback database to timestamp (sysdate-1/24)
2.闪回数据库到某个过去的SCN
flashback database to scn 678854
执行闪回数据库时,需要将数据库切换到MOUNT状态,在闪回数据库结束之后,需要用resetlogs开库,即需要重新设置重做日志
,使得重做日志序列号重新计数
使用闪回数据库
创建用户,并授予相关权限
登录到新建用户下,创建测试用表,插入记录
删除用户
在闪回日志中查看相关记录,使用到的视图v$flashback_database_log
select * from v$flashback_database_log;
使用resetlogs打开数据库,闪回日志仍然有效。
监控闪回数据库
使用v$flashback_database_log查询可以闪回到的最小SCN号以及可以闪回到的时间点。
select oldest_flashback_scn,oldest_flashback_time
from v$flashback_database_log;
数据字典视图v$flashback_database_stat,用于监视闪回日志写入闪回数据的各种开销,
比如记录当前闪回记录起止时间,闪回记录的数据量以及重做日志记录的数据量等信息
select * from v$flashback_database_stat;
监控快闪恢复区的空间变化,在必要时候增加快闪恢复区的空间
select name,space_limit,space_used,space_reclaimable,number_of_files
from v$recovery_file_dest
name 快速恢复区的目录
space_limit 空间最大使用上限
space_used 已使用了的空间
space_reclaimable 可以回收的空间
使用闪回数据库的限制
1.数据文件被删除或缩短
2.在闪回时间范围内复原或重建了一个控制文件
3.在resetlogs操作之前
4.表空间被删除
原文地址:http://blog.51cto.com/10579005/2072937