前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【DB笔试面试814】在Oracle中,什么是闪回数据库(Flashback Database)?

【DB笔试面试814】在Oracle中,什么是闪回数据库(Flashback Database)?

作者头像
小麦苗DBA宝典
发布2020-06-10 16:25:53
8020
发布2020-06-10 16:25:53
举报

题目部分

【DB笔试面试814】在Oracle中,什么是闪回数据库(Flashback Database)?

答案部分

闪回数据库就是当数据库出现逻辑错误时,能够将整个数据库回退到出错前的那个状态。应用场景包括:

① 系统管理员误删除了用户。

② 用户截断了表(TRUNCATE)。

③ 用户错误地执行了某个批处理任务,或者该批处理任务的脚本编写有问题,使得多个表的逻辑出现问题,无法采用闪回表的方式进行恢复。

闪回数据库是进行时间点恢复的新战略。它能够快速将Oracle数据库恢复到以前的时间,以正确更正由于逻辑数据损坏或用户错误而引起的任何问题。闪回日志可用于捕获旧版本的变化块。当需要执行恢复时,可快速重放闪回日志,以将数据库恢复到错误前的时间点,并且只恢复改变的块。这一过程非常快,可将恢复时间从数小时缩短至几分钟。此外,它还非常易用。通过发出以下简单的命令,可将数据库恢复到2:05PM。

代码语言:javascript
复制
FLASHBACK DATABASE  to '2:05 PM';

要想启动Flashback Database的功能,那么需要满足以下几个条件:

① 数据库在Archivelog模式

② 数据库在MOUNT或OPEN状态

③ 使用闪回恢复区,参数db_recovery_file_dest_size和db_recovery_file_dest都必须配置,因为flashback log必须要求放在flash recovery area里,如下所示:

代码语言:javascript
复制
alter system set db_recovery_file_dest_size=4g;
alter system set db_recovery_file_dest='/u01/app/oracle/fast_recovery_area';
alter database add supplemental log data;
alter database add supplemental log data(primary key,unique index) columns;
alter database FLASHBACK on;--如果要关闭使用alter database flashback off;

在Flashback DB功能启用之后,Oracle启动了一个后台进程RVWR(Recovery Writer)负责把位于SGA中的Flashback Buffer中的Flashback Log写出到闪回恢复区中:

代码语言:javascript
复制
--flashback buffer的大小:
SQL> select * from v$sgastat where lower(name) like '%flash%';
POOL NAME BYTES
------------ -------------------------- ----------
shared pool flashback generation buff 3981204
SQL>

--后台启动的RVWR进程:
SQL> select addr,program from v$process where background=1 and program like '%RVWR%';
ADDR PROGRAM
-------- ----------------------------------------------------------------
8FACC870 ORACLE.EXE (RVWR)

SQL> select paddr,description from v$bgprocess where paddr<>'00' AND paddr='8FACC870';
PADDR DESCRIPTION
-------- ----------------------------------------------------------------
8FACC870 Recovery Writer
SQL>

在启用闪回数据库功能的过程中,生成的告警日志如下所示:

代码语言:javascript
复制
Tue Feb 06 11:17:07 2018
alter database FLASHBACK on
Starting background process RVWR
Tue Feb 06 11:17:07 2018
RVWR started with pid=31, OS id=12594 
Allocated 3981120 bytes in shared pool for flashback generation buffer
Flashback Database Enabled at SCN 2010282
Completed: alter database FLASHBACK on

与闪回数据库有关的几个重要视图如下所示:

代码语言:javascript
复制
SELECT * FROM V$FLASHBACK_DATABASE_LOG;--记录闪回日志信息,包括最早可以回复的SCN,闪回日志的大小
SELECT * FROM V$FLASHBACK_DATABASE_STAT;--用于监视闪回数据库日志中记录闪回数据的开销,包含24小时的信息,每行代表一个小时的时间间隔,可以确定数据生成的变化,FLASHBACK_DATA和REDO_DATA分别表示时间间隔内写入的闪回字节数和Redo日志字节数
SELECT * FROM V$FLASHBACK_DATABASE_LOGFILE ;--闪回数据库日志文件信息

& 说明:

有关如何开启闪回数据库的功能可以参考我的BLOG:http://blog.itpub.net/26736162/viewspace-2136497/

本文选自《Oracle程序员面试笔试宝典》,作者:小麦苗

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-06-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 DB宝 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档