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 hh34: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.表空间被删除