关于oracle闪回的Q/A

已邀请:

1
闪回功能 在19C或23C有无得到什么增强?
#回答:闪回功能已经比较完善和成熟,所以新版本上的相关新特性并不多。
19c: 1)备库随主库自动闪回;2)定期清除闪回日志以提高FRA区大小的可预测性


2
咱们讲的这个闪回功能是基于什么版本的?11g和19c的两个版本都可以使用吗?
#回答:本次课的内容大部分对于11g和19c两个版本都可以使用。针对多租户PDB级别的闪回,只在多租户架构下可用,所以11g不可用。


3
oltp环境和olap环境 如何估算undo表空间的大小 或者undo retention如何计算 设置呢?
#回答:undo大小需要根据自身数据库负载和业务需要类型综合判断,V$UNDOSTAT视图可以帮助分析估计当前工作负载所需的UNDO空间量。
V$UNDOSTAT 视图可用于监视事务执行对当前实例中UNDO空间的影响。统计undo空间消耗、事务并发、undo retention的调优,以及实例中长时间运行的查询的长度和SQL ID。


4
FDA 的表空间是,一个数据库,
创建一个就可以,还是说需要启用FDA功能的表空间,都要创建成 FDA表空间,
只有属于FDA表空间的表,才能使用FDA功能。
#回答:首先创建一个表空间(例如tbs1),然后在表空间上创建FDA(例如fda1),最后在所需要的表上指定创建的FDA(alter table TAB2 flashback archive fda1;)
对于TAB2表本身所在的表空间,与FDA无直接关联,无需做调整。



5
启用了Flashback Database后,是否会影响Undo的Retention,也就是Flashback Query/Table/Transaction可以恢复到更老的时间?
#回答:不会的,开启flashback database只对数据库整体闪回有效,对闪回查询/表/事务没有影响。

6
有没有基于archivelog的历史数据查询方法
#回答:可以通过logminer分析查询archivelog中的历史数据变化。


7
闪回数据库,和RMAN的区别和联系呢,
如果使用了闪回数据库,是不是之前的RMAN备份就失效了。
#回答:数据库闪回不会导致rman备份失效。

8
A表被truncate了,能闪回吗,一般用什么方法闪回呢?
#回答:如果表被truncate了,就无法执行表闪回了(会报错:表结构发生变化),只能通过数据库整体闪回。

9
老师,数据库是装在docker里吗
#回答:是的,实战演练工作坊系列都是使用的同一套docker环境。

10
RAC 架构下的数据库闪回,和DG模式下的数据库闪回,能介绍下吗
#回答:RAC架构下的数据库闪回和单实例的区别不大,需要将RAC的实例都停掉然后open mount其中一个实例,执行闪回操作,最后open resetlog之后,再将该实例关闭,然后整体启动RAC数据库的所有实例。
DG模式,如果是19c版本,备库可以随着主库一起自动闪回。

11
FDA 等对 数据库版本的支持情况呢,11.2.4支持FDA吗
#回答:在11g中开始引入此特性,在11g中叫做total recall

12
开启闪回对空间的成本如何,会需要很多额外空间来保存记录吗,可以一直把闪回开启吗,有没有什么影响
#回答:开启闪回会产生额外的闪回日志占用额外空间,日志产生量和系统负载情况相关。可以通过DB_FLASHBACK_RETENTION_TARGET参数指定闪回到的最远时间。空间使用情况可以使用v$recovery_area_usage监控。
19c引入新的特性,利用FRA的自动清除管理闪回日志,具体可以参考相应特性具体了解。

13
as of timestamp 最久能回看多长时间? 由哪个参数控制呢?
#回答:闪回查询是基于undo的,这个无法100%确保能够闪回到哪个时间点。
undo_retention参数指定undo的保留策略,正常情况下是可以保障闪回到这个点的,但是如果新的transaction得不到undo的情况下也会突破这个参数限制,回收未过期的undo,在这种情况下,无法保障undo_retention。


14
flashback database 回滚到某个时间点后,如何再回到当前状态?
#回答:闪回数据库后如果open resetlog,则无法向后再闪回。单独的表闪回可以支持双向。


15
如果是truncate的表,采用哪种方式恢复数据比较好?
#回答:truncate是无法使用闪回表的,如果想使用闪回技术恢复该表,只能通过整体数据库闪回实现。也可以通过RMAN实现单独表的恢复。

16
flashback table后索引是否需要重建或rebuild?
#回答:index会随着表一同闪回,不需要重建

17
另外,如果有pk/fk ,flash 表会出错吗?
#回答:如果有constraint violation会报错。


18
闪回后行移动是否需要关闭以及重建索引?
#回答:索引会随着表一同闪回,rowmovement在闪回后可以选择disable


19
recyclebin是否有容量的限制 或者保留期限?
#回答:没有明确的参数指定保留期或空间限制,占用的空间仍然在原表空间,表空间需要扩张或者无可用空间时会回收。
另外,可以使用purge强制立即回收。

20
开启闪回后,会产生大量的日志,很快撑爆,如何预估日志产生量
#回答:日志产生量决定于系统的数据块变化量,可以通过v$recovery_area_usage视图监控闪回日志的总量,或者V$FLASHBACK_DATABASE_LOG视图查看生成的闪回日志。
如果在开启前预估的话,可以参考mos文档:ID 761126.1

21
您好,在不能闪回数据库的情景下,如果分区被删,可以闪回么?
#回答:闪回无法针对partition进行,可以考虑使用rman的recovery恢复分区。

22
开启FDA是否需要数据库开启归档模式啊?
#回答:数据库中的flashback on需要开启归档作为前提条件。
FDA不需要依赖开启归档模式。


23
闪回库能前后闪吗
#回答:闪回数据库后如果open resetlog,则无法向后再闪回。单独的表闪回可以支持双向。

24
闪回数据库时,如果不是我想要的时间点,可以否再重新闪回到某个时间点(之前或之后),由于执行了reset log?
#回答:闪回数据库后如果open resetlog,则无法向后再闪回。单独的表闪回可以支持双向。


25
应用如果正在访问某个表,闪回的时候会锁表吗?
#回答:闪回过程中会产生锁表。

要回复问题请先登录注册