ORACLE_OCP之闪回数据库
- 文章目标:
- 描述闪回数据库架构
- 配置数据库以支持闪回数据库
- 执行闪回数据库
一、闪回数据库:
- 可以将数据库回退到过去的某一时刻,效果等同于RMAN的不完整恢复.他将丢失在闪回点之后的所有数据,因为他必须使用resetlogs打开数据库.
- 它可以恢复一些逻辑错误,比如update语句忘记了where过滤条件,导致整个表的数据被修改等.
闪回数据库不能撤销物理损坏,而只能恢复用户错误造成的逻辑错误.
二、闪回数据库:连续数据保护
- 快速的时间点恢复策略
- 消除了还原整个数据库备份的需要
- 为数据库提供持续的数据保护
- 优化:更改前块记录
- 恢复刚刚更改的块
- 重播日志以将数据库还原到所需时间
- 提供快速恢复:分钟,而不是几个小时
- 需要单个命令来还原
- 闪回数据库到正确的时间上
三、闪回数据库操作
- 就像数据库的倒带按钮一样
- 可以在用户造成逻辑数据损坏的情况下使用
四、闪回数据库架构
- 启用闪回数据库,修改的块的镜像会不时的从数据库缓冲区复制到SGA内的闪回缓冲区,由恢复写入器进程(Recovery Writer,RVWR)将闪回缓冲区写入磁盘和闪回日志.闪回日志记录的是完整块镜像的日志.
- 闪回数据库从性能考虑,并不会将所有块的变化写入闪回日志.
- 假设有一个数据块X,每五分钟改变一次.那么从10点到11点,改变了20次,但是很可能只有12次变更写入了闪回日志.
- 假设数据块X,9:00和9:05分的变更写入了闪回日志,而现在需要将数据库闪回至9:03
- 闪回数据库首先会找到块X在9:00变更的完整镜像,然后应用redolog,将数据块A的变更推到9:03.
- 这个恢复的方式虽然和RMAN不完整恢复相似,但是闪回数据库更加方便和快捷.
- 假设有一个凌晨4点的RMAN备份,如果在上午11点发生了用户错误,使用RMAN不完整恢复,恢复到10:30.这实际上是将数据库所有的块(凌晨4点的版本),然后应用redolog向前推进至10:30
- 而闪回数据库则不同,闪回日志只记录发生变化的块.按照上面的例子,只需要在闪回日志中找到9:03分之前的最近一个数据块的版本,其余的应用redolog即可.所以闪回数据库相对于RMAN不完全恢复有如下的优点:
- 1.闪回数据库只恢复有变化的数据块(RMAN需要恢复所有的数据块)
- 2.闪回数据库从最近的一个数据块版本恢复。RMAN不完全恢复是从距恢复时间点上最近的一份备份开始恢复,当备份恢复完成后,和恢复时间点差的时间上的事务需要进行REDO重演。
五、Configuring Flashback Database
SQL> ALTER SYSTEM SET2 DB_FLASHBACK_RETENTION_TARGET=2880 SCOPE=BOTH;SQL> ALTER DATABASE FLASHBACK ON;(mount模式下)
六、闪回数据库:示例
- 闪回阶段: 数据库必须在Mount状态下 (以独占模式)进行闪回数据库操作
RMAN> FLASHBACK DATABASE TO TIME =
2> “TO_DATE(‘2009-05-27 16:00:00’,
3> ‘YYYY-MM-DD HH24:MI:SS’)”;RMAN> FLASHBACK DATABASE TO SCN=23565;
RMAN> FLASHBACK DATABASE
2> TO SEQUENCE=223 THREAD=1;SQL> FLASHBACK DATABASE
2 TO TIMESTAMP(SYSDATE-1/24);
SQL> FLASHBACK DATABASE TO SCN 53943;
SQL> FLASHBACK DATABASE TO RESTORE POINT b4_load;
- 要查看闪回是否成功:以read only模式打开数据库
- 确认闪回完成:用RESETLOGS 在 read /write下打开
- Alter database open resetlogs;
七、闪回数据库注意事项
- 闪回数据库操作完成后,打开数据库:
- 在只读模式下,验证是否使用了正确的目标时间或SCN
- 使用RESETLOGS操作以允许DML的方式打开数据库,让数据库正常工作。
- 在以下情况下,您将无法使用闪回数据库:
- 控制文件已还原或重新创建。
- 表空间已删除。
- 数据文件的大小已减小。
- 使用TO BEFORE RESETLOGS子句闪回到上一次RESETLOGS操作之前。
八、监视闪回数据库信息
- 监控达到保留目标的能力:
- 查看闪回日志区磁盘配额:
SQL> SELECT estimated_flashback_size,
2 flashback_size
3 FROM V$FLASHBACK_DATABASE_LOG;
- 确定当前的闪回窗口:
SQL> SELECT oldest_flashback_scn,
2 oldest_flashback_time
3 FROM V$FLASHBACK_DATABASE_LOG;
- 监视闪回数据库日志中的日志:
SQL> SELECT *
2 FROM V$FLASHBACK_DATABASE_STAT;
九、A guaranteed restore point-保证的还原点
- 有保证的还原点可确保您可以执行:
- 随时向该SCN发送FLASHBACK DATABASE命令。
SQL> CREATE RESTORE POINT before_upgrade
2 GUARANTEE FLASHBACK DATABASE;
十、闪回数据库和保证的还原点
- 要使用保证的还原点,数据库必须满足以下先决条件:
- COMPATIBLE初始化参数必须设置为10.2或更大。
- 数据库必须处于ARCHIVELOG模式。
- FLASHBACK DATABASE要求从还原点左右开始使用归档的重做日志。
- 必须配置快速恢复区。
十一、最佳实践:闪回数据库
- 调整快速恢复区存储。
- 使用ASM,配置足够的磁盘组,依此类推。
- 使用物理备用数据库测试闪回日志记录。
- 在运行比闪回保留期更长的工作负荷之后,请使用V$FLASHBACK_DATABASE_LOG调整日志空间的大小。
- 创建保证的还原点(GRP),而无需启用闪回日志记录.
- 为重复更新相同块的工作量节省磁盘空间
- 删除GRP以立即回收空间